public void Patch <TTarget>(TTarget target) { var targetProperties = typeof(TTarget).GetCachedProperties(); var mapping = DeltaObjectMappings.GetMapping <T, TTarget>(); foreach (var key in _properties.Keys) { if (!_properties[key].IsSet) { continue; } if (!mapping.TryGetMappedPropertyName(key, out var targetPropertyMap)) { continue; } var targetProperty = targetProperties.FirstOrDefault(p => p.Name.Equals(targetPropertyMap.propertyName, StringComparison.CurrentCultureIgnoreCase)); if (targetProperty == null) { continue; } var value = targetPropertyMap.mapFunction == null ? _properties[key].Value : targetPropertyMap.mapFunction(_properties[key].Value); targetProperty.SetValue(target, value); } }
public static void ClearMappings() { DeltaObjectMappings.ClearMappings(); }