/// <summary> /// Create the <see cref="PolicySet"/> based on the configuration settings. /// </summary> /// <param name="context">Builder context.</param> /// <param name="name">Name of object to create.</param> /// <param name="configurationSource">Configuration source.</param> /// <param name="reflectionCache">reflection cache, unused in this method.</param> /// <returns>The constructed <see cref="PolicySet"/> object.</returns> public object CreateObject(IBuilderContext context, string name, IConfigurationSource configurationSource, ConfigurationReflectionCache reflectionCache) { PolicyInjectionSettings injectionSettings = configurationSource.GetSection(PolicyInjectionSettings.SectionName) as PolicyInjectionSettings; if (injectionSettings == null) { return(new PolicySet()); } PolicySet policySet = new PolicySet(); foreach (PolicyData policyData in injectionSettings.Policies) { RuleDrivenPolicy policy = new RuleDrivenPolicy(policyData.Name); foreach (CallHandlerData handlerData in policyData.Handlers) { ICallHandler callHandler = CallHandlerCustomFactory.Instance.Create(context, handlerData, configurationSource, reflectionCache); policy.Handlers.Add(callHandler); } foreach (MatchingRuleData matchingRuleData in policyData.MatchingRules) { IMatchingRule matchingRule = MatchingRuleCustomFactory.Instance.Create(context, matchingRuleData, configurationSource, reflectionCache); policy.RuleSet.Add(matchingRule); } policySet.Add(policy); } return(policySet); }
private PolicySet CalculatePoliciesForType(Type t) { PolicySet result = new PolicySet(); result.RemoveAt(0); // We don't want the extra attribute driven policy here. foreach (Policy policy in this) { if (policy.AppliesTo(t)) { result.Add(policy); } } return(result); }