コード例 #1
0
        public PolicyInjectionSettingsNode Build()
        {
            PolicyInjectionSettingsNode node           = new PolicyInjectionSettingsNode();
            InjectorCollectionNode      injectorsNode  = new InjectorCollectionNode();
            PolicyCollectionNode        collectionNode = new PolicyCollectionNode();

            node.AddNode(injectorsNode);
            node.AddNode(collectionNode);

            foreach (InjectorData injectorData in settings.Injectors)
            {
                AddInjector(injectorData, injectorsNode);
            }
            foreach (PolicyData policyData in settings.Policies)
            {
                PolicyNode policyNode = new PolicyNode(policyData);

                AddMatchingRules(policyData, policyNode);

                AddHandlers(policyData, policyNode);

                collectionNode.AddNode(policyNode);
            }

            return(node);
        }
コード例 #2
0
        /// <summary>
        /// Opens the policy injection configuration from an application configuration file.
        /// </summary>
        /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param>
        /// <param name="rootNode">The <see cref="ConfigurationApplicationNode"/> of the hierarchy.</param>
        /// <param name="section">The policy injection configuration section or <see langword="null"/> if no section was found.</param>
        protected override void OpenCore(IServiceProvider serviceProvider,
                                         ConfigurationApplicationNode rootNode,
                                         ConfigurationSection section)
        {
            if (null != section)
            {
                PolicyInjectionSettingsNodeBuilder builder = new PolicyInjectionSettingsNodeBuilder(serviceProvider, (PolicyInjectionSettings)section);
                PolicyInjectionSettingsNode        node    = builder.Build();

                SetProtectionProvider(section, node);
                rootNode.AddNode(node);
            }
        }
コード例 #3
0
        /// <summary>
        /// Gets a <see cref="ConfigurationSectionInfo"/> object containing the Policy Injection Block's configuration information.
        /// </summary>
        /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param>
        /// <returns>A <see cref="ConfigurationSectionInfo"/> object containing the Policy Injection Block's configuration information.</returns>
        protected override ConfigurationSectionInfo GetConfigurationSectionInfo(IServiceProvider serviceProvider)
        {
            ConfigurationNode           rootNode = ServiceHelper.GetCurrentRootNode(serviceProvider);
            PolicyInjectionSettingsNode node     = null;

            if (null != rootNode)
            {
                node = rootNode.Hierarchy.FindNodeByType(rootNode, typeof(PolicyInjectionSettingsNode)) as PolicyInjectionSettingsNode;
            }
            PolicyInjectionSettings settings = null;

            if (node != null)
            {
                PolicyInjectionSettingsBuilder builder = new PolicyInjectionSettingsBuilder(serviceProvider, node);
                settings = builder.Build();
            }

            string protectionProviderName = GetProtectionProviderName(node);

            return(new ConfigurationSectionInfo(node, settings, PolicyInjectionSettings.SectionName, protectionProviderName));
        }
コード例 #4
0
 public PolicyInjectionSettingsBuilder(IServiceProvider serviceProvider, PolicyInjectionSettingsNode node)
 {
     this.hierarchy = ServiceHelper.GetCurrentHierarchy(serviceProvider);
     this.node      = node;
 }