4

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>

私がやりたいことは、コードでこのセクションを読んで、実行時にどのセクションがあるかを調べることです。私が試してみました:

var mySections = ConfigurationManager.GetSection("configSections");

しかし、これは null を返します。簡単なものが欠けていると確信していますが、これを行う方法については何も見つかりません。

ありがとう

4

2 に答える 2

6

-property を使用してConfiguration.Sections、宣言された構成セクションの名前を取得します。次に、必要に応じて、 を使用ConfigurationManager.GetSection()して個々のセクションを取得します。

それぞれのSectionInformation.IsDeclaredまたはの値を使用して、セクションが構成ファイルで実際に宣言されているか、またはから継承されているかを確認したい場合があることに注意してください。ConfigSourceConfigurationSection.SectionInformationmachine.config

例:

    var cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    var localSections = cfg.Sections.Cast<ConfigurationSection>()
       .Where(s => s.SectionInformation.IsDeclared);

最後に、このアプローチでは構成セクションのみが取得されることに注意してください。.内にある構成セクションは返されません<sectionGroup>。それらについては、最初に iterate over が必要です。これには、セクションごとのグループ セクションを含むConfiguration.SectionGroups独自のプロパティがあります。また、ネストされたセクション グループを含めることもでき、これも各インスタンスのプロパティからSectionsアクセスできます。SectionGroupsConfigurationSectionGroup

于 2012-04-26T11:33:54.970 に答える
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")
于 2012-04-26T11:23:15.453 に答える