Пример #1
0
 public PolicyAddedEventArgs(ItemPolicy policy)
 {
     if (policy == null)
     {
         throw new ArgumentNullException("policy");
     }
     this._policy = policy;
 }
Пример #2
0
 internal bool Contains(ItemPolicy policy)
 {
     for (PolicyDrivenFeatureConnector <TFeatureProviderType> .PolicyNode policyNode = this; policyNode != null; policyNode = policyNode._next)
     {
         if (policyNode._policy == policy)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #3
0
        private IList <TFeatureProviderType> CreateFeatureProviders(ModelItem item, ItemPolicy policy, List <PolicyDrivenFeatureConnector <TFeatureProviderType> .ProviderData> dataList)
        {
            UsesItemPolicyAttribute requiredPolicy = new UsesItemPolicyAttribute(policy.GetType());
            Predicate <Type>        match          = (Predicate <Type>)(featureProviderType =>
            {
                foreach (UsesItemPolicyAttribute itemPolicyAttribute in this.Manager.GetCustomAttributes(featureProviderType, typeof(UsesItemPolicyAttribute)))
                {
                    if (itemPolicyAttribute.Equals((object)requiredPolicy) && new RequirementValidator(this.Manager, featureProviderType).MeetsRequirements)
                    {
                        if (dataList != null)
                        {
                            foreach (PolicyDrivenFeatureConnector <TFeatureProviderType> .ProviderData providerData in dataList)
                            {
                                if (providerData.Provider.GetType() == featureProviderType)
                                {
                                    if (providerData.AssociatedPolicies == null || !providerData.AssociatedPolicies.Contains(policy))
                                    {
                                        providerData.AssociatedPolicies = new PolicyDrivenFeatureConnector <TFeatureProviderType> .PolicyNode(policy, providerData.AssociatedPolicies);
                                    }
                                    return(false);
                                }
                            }
                        }
                        return(true);
                    }
                }
                return(false);
            });
            List <TFeatureProviderType> list = new List <TFeatureProviderType>();

            if (!policy.IsSurrogate)
            {
                foreach (TFeatureProviderType featureProviderType in FeatureExtensions.CreateFeatureProviders(this.Manager, typeof(TFeatureProviderType), item, match))
                {
                    list.Add(featureProviderType);
                }
            }
            else
            {
                foreach (ModelItem modelItem in policy.GetSurrogateItems(item))
                {
                    foreach (TFeatureProviderType featureProviderType in FeatureExtensions.CreateFeatureProviders(this.Manager, typeof(TFeatureProviderType), modelItem, match))
                    {
                        list.Add(featureProviderType);
                    }
                }
            }
            return((IList <TFeatureProviderType>)list);
        }
Пример #4
0
 public PolicyItemsChangedEventArgs(ItemPolicy policy, IEnumerable <ModelItem> itemsAdded, IEnumerable <ModelItem> itemsRemoved)
 {
     if (policy == null)
     {
         throw new ArgumentNullException("policy");
     }
     this._policy       = policy;
     this._itemsAdded   = itemsAdded;
     this._itemsRemoved = itemsRemoved;
     if (this._itemsAdded == null)
     {
         this._itemsAdded = (IEnumerable <ModelItem>) new ModelItem[0];
     }
     if (this._itemsRemoved != null)
     {
         return;
     }
     this._itemsRemoved = (IEnumerable <ModelItem>) new ModelItem[0];
 }
Пример #5
0
 internal static bool Remove(ref PolicyDrivenFeatureConnector <TFeatureProviderType> .PolicyNode root, ItemPolicy policy)
 {
     PolicyDrivenFeatureConnector <TFeatureProviderType> .PolicyNode policyNode1 = (PolicyDrivenFeatureConnector <TFeatureProviderType> .PolicyNode)null;
     for (PolicyDrivenFeatureConnector <TFeatureProviderType> .PolicyNode policyNode2 = root; policyNode2 != null; policyNode2 = policyNode2._next)
     {
         if (policyNode2._policy == policy)
         {
             if (policyNode1 != null)
             {
                 policyNode1._next = policyNode2._next;
                 return(true);
             }
             root = policyNode2._next;
             return(true);
         }
         policyNode1 = policyNode2;
     }
     return(false);
 }
Пример #6
0
 internal PolicyNode(ItemPolicy policy, PolicyDrivenFeatureConnector <TFeatureProviderType> .PolicyNode next)
 {
     this._policy = policy;
     this._next   = next;
 }