public override bool Equals(object obj) { UsesItemPolicyAttribute itemPolicyAttribute = obj as UsesItemPolicyAttribute; if (itemPolicyAttribute == null) { return(false); } return(itemPolicyAttribute.ItemPolicyType == this.ItemPolicyType); }
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); }
internal RequirePolicySubscription(EditingContext context, UsesItemPolicyAttribute requirement) : base((RequirementAttribute)requirement) { this._context = context; this._policyType = requirement.ItemPolicyType; }