Пользовательский раздел в App.Config, перестает работать ConfigurationManager - PullRequest
0 голосов
/ 18 марта 2020

Я создал консольное приложение в c#, которое считывает информацию из App.config. если я добавляю вещи в раздел appSettings, я могу получить к ним доступ, и это работает, но как только я добавляю некоторые пользовательские разделы, я ничего не могу прочитать из него. Я использую ConfigurationManager, и у меня есть ссылка для него включена. Моя конфигурация приложения выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<appSettings>
    <add key="overwriteBackupFiles" value="False"/>
    <add key="path" value="c:\temp"/>
</appSettings>
<ImageFormatsINeed>
  <add key="type1" value="width=180&#38;height=180"></add>
  <add key="type2" value="width=220&#38;height=220"></add>
  <add key="type3" value="width=500&#38;height=500"></add>
</ImageFormatsINeed>
</configuration>

, и я пытаюсь получить доступ к этой информации следующим образом:

string path = ConfigurationManager.AppSettings["path"];

var settings = ConfigurationManager.GetSection("ImageFormatsINeed");

Когда у меня не было раздела ImageFormatsINeed , я мог получить путь от AppSettings, и он работал. Но как только я добавил свой ImageFormatsINeed раздел, все перестало работать.

Теперь мой вопрос: как мне добавить пользовательские разделы в app.config, чтобы они работали, или мне просто нужно прочитать? мой ImageInformation из какого-либо пользовательского xml файла или файла конфигурации?

1 Ответ

1 голос
/ 18 марта 2020

Вы должны использовать тег <<a href="https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/configsections-element-for-configuration" rel="nofollow noreferrer"> configSections > вверху вашего app.config, для этого случая вы должны использовать тип AppSettingsSection

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <configSections>
        <section  name="ImageFormatsINeed" type="System.Configuration.AppSettingsSection" />
    </configSections>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>        
    <appSettings>
        <add key="overwriteBackupFiles" value="False"/>
        <add key="path" value="c:\temp"/>
    </appSettings>
    <ImageFormatsINeed>
      <add key="type1" value="width=180&#38;height=180"></add>
      <add key="type2" value="width=220&#38;height=220"></add>
      <add key="type3" value="width=500&#38;height=500"></add>
    </ImageFormatsINeed>
    </configuration>

Тогда в вашем C# коде:

NameValueCollection settings_section = ConfigurationManager.GetSection("ImageFormatsINeed") as NameValueCollection;
Console.WriteLine(settings_section["type1"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...