예제 #1
0
        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);
            }
        }
예제 #2
0
 public static void ClearMappings()
 {
     DeltaObjectMappings.ClearMappings();
 }