我已经在我的App.Config中设置了一些自定义配置部分,这样我现在有一个看起来像这样的configSection。
<configSections>
<section name="Section1" type="ConfigSections.MySection, MyNamespace"/>
<section name="Section2" type="ConfigSections.MySection, MyNamespace"/>
<section name="Section3" type="ConfigSections.MySection, MyNamespace"/>
</configSections>
我想要做的是在代码中阅读 this section ,以便在运行时找到我的部分。我试过了:
var mySections = ConfigurationManager.GetSection("configSections");
但是返回null。我确定我错过了一些简单的东西,但我找不到任何关于如何做到的事情。
由于
答案 0 :(得分:5)
使用Configuration.Sections
- 属性获取声明的配置节的名称。然后,根据需要,可选择使用ConfigurationManager.GetSection()
检索单个部分。
请注意,您可能希望使用相应SectionInformation.IsDeclared
的ConfigurationSection.SectionInformation
或ConfigSource
的值来查找在配置文件中实际声明的部分,或者是继承的部分来自machine.config
或其他。
示例:
var cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var localSections = cfg.Sections.Cast<ConfigurationSection>()
.Where(s => s.SectionInformation.IsDeclared);
最后,请注意,此方法只会为您提供配置部分。它不会返回配置节,它们本身位于<sectionGroup>
内。对于他们来说,首先需要迭代Configuration.SectionGroups
,它有自己的Sections
- 属性,其中包含每个部分组的部分。它还可以包含嵌套的节组,可以通过每个ConfigurationSectionGroup
实例的SectionGroups
属性进行访问。
答案 1 :(得分:0)
如果将所有部分放入一个部分组中,这将起作用:
<configSections>
<sectionGroup name="FMGlobal.Common.SecuritySubsystem.ADAzManFeed">
<section name="ADFolders" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
var NVC = (ConfigurationManager.GetSection( _
"FMGlobal.Common.SecuritySubsystem.ADAzManFeed")