Настройка списка в разделе конфигурации.net

У меня возникли проблемы с написанием раздела конфигурации для моего приложения. Все, что мне нужно, - это настроить список пар, которые я бы перевел на объект. Я видел реализации с использованием классов ConfigurationElement и ConfigurationElementCollection, но это выглядит ужасно, и я фактически заставил свой код и конфигурацию соответствовать этому решению. Я НЕ хочу использовать элемент с атрибутами key-value, потому что это не то, что мне нужно. Я хочу, чтобы мой раздел конфигурации выглядел следующим образом:

<mysection>
 <option>
 <city>aaa</city>
 <country>bbb</country>
 </option>
 <option>
 <city>ccc</city>
 <country>ddd</country>
 </option>
 <option>
 <city>eee</city>
 <country>fff</country>
 </option>
</mysection>

Еще один секретный раздел:

<mysection>
 <option city="aaa" country="bbb">
 </option><option city="ccc" country="ddd">
 </option></mysection>

Есть ли какой-нибудь класс, который может помочь мне разобрать это, не заставляя мой код делать уродливые вещи?

Спасибо

1 ответ

Вы можете выбрать 2 варианта:

  1. Создайте настраиваемый раздел конфигурации по аналогичному вопросу о том, как добавить xml в web.config? или посмотрите на базовый пример: http://www.4guysfromrolla.com/articles/020707-1.aspx

  2. Если вы можете сохранить его в простом списке, перейдите в строку, разделенную запятыми, в appSettings:

<pre class="prettyprint linenums"> <appsettings> <add key="countryName" value="CityA, CityC, CityD"> <add key="countryName2" value="CityB, CityE"> </add></add></appsettings> </pre>

И прочитайте это так:

string[] citiesPerCountry = ConfigurationManager.AppSettings["countryName"].Split(',').Select(s => s.Trim()).ToArray();

licensed under cc by-sa 3.0 with attribution.