Могу ли я сгруппировать ключи appseting? - PullRequest
3 голосов
/ 11 июня 2009

Я создаю небольшое консольное приложение, которое создает индекс Lucene из базы данных Sql. Это приложение будет запущено с одним параметром. Этот параметр определяет, какую строку подключения он будет использовать и где должен быть размещен файл назначения.

Я хотел бы сохранить строки подключения и целевые пути в файле app.config. Можно ли как-то сгруппировать настройки? Например, я хотел бы, чтобы, если задан параметр «ABC», использовалась connectionstring1 и targetPathBanana.

Этот следующий пример не работает, но я думаю, что иллюстрирует мое намерение

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <abc>
        <appSettings>               
            <add key="targetBasePath" value="\\Thor\lucene\abc"/>
        </appSettings>
        <connectionStrings>             
            <add name="commonString" 
                 connectionString="Data Source=thor;Persist Security Info=True;User ID=****;Password=****"/>
        </connectionStrings>
    </abc>    
    <123>
        <appSettings>               
            <add key="targetBasePath" value="\\Loki\temp\lucene"/>
        </appSettings>
        <connectionStrings>             
            <add name="commonString" 
                 connectionString="Data Source=helga;Persist Security Info=True;User ID=****;Password=****"/>
        </connectionStrings>
    </123>
</configuration>

Я знаю, что мог бы просто сделать так, чтобы имена ключей соответствовали соглашению об именах, но мне любопытно, можно ли решить эту проблему менее основанным на соглашениях.

1 Ответ

4 голосов
/ 11 июня 2009

Если вы используете этот префикс в своем файле app.config, вы сможете создать столько пользовательских групп разделов, которые содержат <appSettings> и <connectionStrings> разделов, сколько пожелаете:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="ABC">
      <section name="appSettings" 
               type="System.Configuration.AppSettingsSection,
                     System.Configuration"/>
      <section name="connectionStrings" 
               type="System.Configuration.ConnectionStringsSection,
                     System.Configuration"/>
    </sectionGroup>
  </configSections>
  ... put your section groups here.....
  <ABC>
    <appSettings>                           
      <add key="targetBasePath" value="\\Thor\lucene\abc"/>
    </appSettings>
    <connectionStrings>                     
      <add name="commonString" connectionString="..."/>
    </connectionStrings>
  </ABC>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...