private static void CopyIncrementalCollection(PropertyInfo incrementalProperty, PropertyDefinition addedProperty, PropertyDefinition removedProperty, FacadeBase storage, PolicyConfigurationBase baseConfiguration)
        {
            object obj  = null;
            object obj2 = null;

            UnifiedPolicyStorageFactory.TryReadPropertyValue(storage, addedProperty, out obj);
            UnifiedPolicyStorageFactory.TryReadPropertyValue(storage, removedProperty, out obj2);
            if (obj != null || obj2 != null)
            {
                IncrementalAttributeBase incrementalCollection = UnifiedPolicyStorageFactory.GetIncrementalCollection(incrementalProperty, true, (MultiValuedPropertyBase)obj, (MultiValuedPropertyBase)obj2);
                incrementalProperty.GetSetMethod().Invoke(baseConfiguration, new IncrementalAttributeBase[]
                {
                    incrementalCollection
                });
            }
        }
 private static void CopyPropertyFromStorage(PropertyInfo property, object propertyValue, PolicyConfigurationBase baseConfiguration)
 {
     if (UnifiedPolicyStorageFactory.IsIncrementalAttribute(property))
     {
         IncrementalAttributeBase incrementalAttribute = UnifiedPolicyStorageFactory.GetIncrementalAttribute(property, true, propertyValue);
         property.GetSetMethod().Invoke(baseConfiguration, new IncrementalAttributeBase[]
         {
             incrementalAttribute
         });
         return;
     }
     property.GetSetMethod().Invoke(baseConfiguration, new object[]
     {
         propertyValue
     });
 }
        private static IncrementalAttributeBase GetIncrementalCollection(PropertyInfo property, bool isChanged, MultiValuedPropertyBase addedValues, MultiValuedPropertyBase removedValues)
        {
            IncrementalAttributeBase incrementalAttributeBase = (IncrementalAttributeBase)Activator.CreateInstance(typeof(IncrementalCollection <>).MakeGenericType(new Type[]
            {
                property.PropertyType.GenericTypeArguments[0]
            }));

            if (isChanged)
            {
                IList list = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(new Type[]
                {
                    property.PropertyType.GenericTypeArguments[0]
                }));
                IList list2 = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(new Type[]
                {
                    property.PropertyType.GenericTypeArguments[0]
                }));
                if (addedValues != null)
                {
                    foreach (object value in ((IEnumerable)addedValues))
                    {
                        list.Add(value);
                    }
                }
                if (removedValues != null)
                {
                    foreach (object value2 in ((IEnumerable)removedValues))
                    {
                        list2.Add(value2);
                    }
                }
                return((IncrementalAttributeBase)Activator.CreateInstance(typeof(IncrementalCollection <>).MakeGenericType(new Type[]
                {
                    property.PropertyType.GenericTypeArguments[0]
                }), new IList[]
                {
                    list,
                    list2
                }));
            }
            return((IncrementalAttributeBase)Activator.CreateInstance(typeof(IncrementalCollection <>).MakeGenericType(new Type[]
            {
                property.PropertyType.GenericTypeArguments[0]
            })));
        }
        private static void CopyPropertyToStorage(PropertyDefinition schemaProperty, PropertyInfo property, IPropertyBag storage, PolicyConfigurationBase baseConfiguration)
        {
            object obj = property.GetGetMethod().Invoke(baseConfiguration, null);

            if (UnifiedPolicyStorageFactory.IsIncrementalAttribute(property) || UnifiedPolicyStorageFactory.IsIncrementalCollection(property))
            {
                IncrementalAttributeBase incrementalAttributeBase = (IncrementalAttributeBase)obj;
                if (incrementalAttributeBase != null && incrementalAttributeBase.Changed)
                {
                    UnifiedPolicyStorageFactory.StoreValue(storage, schemaProperty, incrementalAttributeBase.GetObjectValue());
                    return;
                }
            }
            else
            {
                UnifiedPolicyStorageFactory.StoreValue(storage, schemaProperty, obj);
            }
        }
 private static void InitializeIncrementalAttributes(PolicyConfigurationBase baseConfiguration, IEnumerable <PropertyInfo> allProperties)
 {
     foreach (PropertyInfo propertyInfo in from p in allProperties
              where UnifiedPolicyStorageFactory.IsIncrementalAttribute(p)
              select p)
     {
         IncrementalAttributeBase incrementalAttribute = UnifiedPolicyStorageFactory.GetIncrementalAttribute(propertyInfo, false, null);
         propertyInfo.GetSetMethod().Invoke(baseConfiguration, new IncrementalAttributeBase[]
         {
             incrementalAttribute
         });
     }
     foreach (PropertyInfo propertyInfo2 in from p in allProperties
              where UnifiedPolicyStorageFactory.IsIncrementalCollection(p)
              select p)
     {
         IncrementalAttributeBase incrementalCollection = UnifiedPolicyStorageFactory.GetIncrementalCollection(propertyInfo2, false, null, null);
         propertyInfo2.GetSetMethod().Invoke(baseConfiguration, new IncrementalAttributeBase[]
         {
             incrementalCollection
         });
     }
 }