Ответ 1
Вы можете добавлять пользовательские разделы в app.config без написания дополнительного кода. Все, что вам нужно сделать, это "объявление" нового раздела в configSections
node как это
<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");