sub appsettings in the appsetting node c#

前端 未结 2 388
栀梦
栀梦 2020-12-23 16:41

I am using the app.config file that is created with a console application and I can read the val1 of the key1 using the ConfigurationSettings.AppSettings[\"key1\"].ToS

相关标签:
2条回答
  • 2020-12-23 17:19

    AFAIK you can implement a custom section outside of the appsettings. For example, frameworks like Autofac and SpecFlow use these kind of sessions to support their own configuration schema. You can take a look on this MSDN article to understand how to do that. Hope that helps.

    0 讨论(0)
  • 2020-12-23 17:37

    You can add custom sections in app.config without writing additional code. All you have to do is "declaring" new section in configSections node like that

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

    and then you can define this section filling it with keys and values:

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

    To get value of a key from this section you have to add System.Configuration dll as reference to your project, add using and use GetSection method. Example:

    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"];
            }
        }
    }
    

    Nice thing is that you can easily make groups of sections if you need this:

    <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>
    

    If you use groups, to access sections you have to access them using {group name}/{section name} format:

    NameValueCollection test = (NameValueCollection)ConfigurationManager.GetSection("customAppSettingsGroup/genericAppSettings");
    
    0 讨论(0)
提交回复
热议问题