Пользовательский app.config Обработчик раздела конфигурации
Как правильно выбрать список "страниц" через класс, который наследуется от System.Configuration.Section, если я использовал подобный app.config?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="XrbSettings" type="Xrb.UI.XrbSettings,Xrb.UI" />
</configSections>
<XrbSettings>
<pages>
<add title="Google" url="http://www.google.com" />
<add title="Yahoo" url="http://www.yahoo.com" />
</pages>
</XrbSettings>
</configuration>
3 ответа
Сначала вы добавляете свойство в класс, который расширяет раздел:
[ConfigurationProperty("pages", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(PageCollection), AddItemName = "add")]
public PageCollection Pages {
get {
return (PageCollection) this["pages"];
}
}
Затем вам нужно создать класс PageCollection. Все примеры, которые я видел, в значительной степени идентичны, поэтому просто скопируйте этот и переименуйте "NamedService" в "Page".
Наконец добавьте класс, который расширяет ObjectConfigurationElement:
public class PageElement : ObjectConfigurationElement {
[ConfigurationProperty("title", IsRequired = true)]
public string Title {
get {
return (string) this["title"];
}
set {
this["title"] = value;
}
}
[ConfigurationProperty("url", IsRequired = true)]
public string Url {
get {
return (string) this["url"];
}
set {
this["url"] = value;
}
}
}
Вот некоторые файлы из примера реализации:
Вам также следует ознакомиться с серией из трех частей, посвященной Jon Rista, по настройке.NET 2.0 в CodeProject.
- Раскрытие тайн конфигурации.NET 2.0
- Расшифровка загадок конфигурации.NET 2.0
- Раскрывая тайны конфигурации.NET 2.0
Настоятельно рекомендуется, хорошо написано и очень полезно!
Кроме того, если вы часто создаете разделы конфигурации, есть конструктор разделов конфигурации, графический дизайнер предметно-ориентированного языка для проектирования разделов конфигурации.