37

コンソール アプリケーションで作成された app.config ファイルを使用しています。ConfigurationSettings.AppSettings["key1"].ToString()

<configuration>  
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
    </startup>  
    <appSettings>
        <add key="key1" value="val1" />
        <add key="key2" value="val2" />  
    </appSettings> 
</configuration>

しかし、分類したいキーと値が多すぎます。

上記と同様の方法でキーにアクセスしたいので、アプリケーションで使用するのが難しいものを見つけました

すべてのノードを表示し、すべてのノードを取得しないとノードを読み取れない

たとえば、私がやりたいこと:

<appSettings>
    <Section1>
        <add key="key1" value="val1" />
    </Section1>
    <Section2>
        <add key="key1" value="val1" />
    <Section2>
</appSettings>

を使用してアクセスする方法がある場合 ConfigurationSettings.AppSettings["Section1"].["key1"].ToString()

4

2 に答える 2

78

追加のコードを記述せずに、app.config にカスタム セクションを追加できます。configSectionsそのようなノードで新しいセクションを「宣言」するだけです

<configSections>
      <section name="genericAppSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </configSections>

次に、このセクションを定義して、キーと値を入力します。

  <genericAppSettings>
      <add key="testkey" value="generic" />
      <add key="another" value="testvalue" />
  </genericAppSettings>

このセクションからキーの値を取得するにはSystem.Configuration、プロジェクトへの参照として dll を追加し、メソッドを追加usingして使用する必要がありますGetSection。例:

using System.Collections.Specialized;
using System.Configuration;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            NameValueCollection test = (NameValueCollection)ConfigurationManager.GetSection("genericAppSettings");

            string a = test["another"];
        }
    }
}

良いことは、これが必要な場合にセクションのグループを簡単に作成できることです。

<configSections>
    <sectionGroup name="customAppSettingsGroup">
      <section name="genericAppSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 // another sections
    </sectionGroup>
</configSections>

  <customAppSettingsGroup>
    <genericAppSettings>
      <add key="testkey" value="generic" />
      <add key="another" value="testvalue" />
    </genericAppSettings>
    // another sections
  </customAppSettingsGroup>

グループを使用する場合、セクションにアクセスするには、次の{group name}/{section name}形式を使用してアクセスする必要があります。

NameValueCollection test = (NameValueCollection)ConfigurationManager.GetSection("customAppSettingsGroup/genericAppSettings");
于 2013-02-11T13:19:32.697 に答える
0

私の知る限り、appsettingsの外にカスタムセクションを実装できます。たとえば、Autofac や SpecFlow などのフレームワークは、これらの種類のセッションを使用して独自の構成スキーマをサポートします。このMSDN の記事を参照して、その方法を理解してください。それが役立つことを願っています。

于 2013-02-11T12:46:48.167 に答える