如何阅读configSections

时间:2012-04-26 10:45:51

标签: c# app-config

我已经在我的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。我确定我错过了一些简单的东西,但我找不到任何关于如何做到的事情。

由于

2 个答案:

答案 0 :(得分:5)

使用Configuration.Sections - 属性获取声明的配置节的名称。然后,根据需要,可选择使用ConfigurationManager.GetSection()检索单个部分。

请注意,您可能希望使用相应SectionInformation.IsDeclaredConfigurationSection.SectionInformationConfigSource的值来查找在配置文件中实际声明的部分,或者是继承的部分来自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")