自定义的app.config配置节处理 [英] Custom app.config Config Section Handler
问题描述
什么是拿起通过一个类继承自System.Configuration.Section如果我用这样的的app.config页面列表中选择正确的方法是什么?
< XML版本=1.0编码=UTF-8&GT?;
<结构>
< configSections>
<节名称=XrbSettingsTYPE =Xrb.UI.XrbSettings,Xrb.UI/>
< / configSections>
< XrbSettings>
<网页>
<添加标题=谷歌URL =http://www.google.com/>
<添加标题=雅虎URL =http://www.yahoo.com/>
< /页>
< / XrbSettings>
< /结构>
首先,你在扩展部分类添加属性:
[的ConfigurationProperty(页,IsDefaultCollection = FALSE)]
[ConfigurationCollection(typeof运算(PageCollection),AddItemName =加)
公共PageCollection页面{
得到 {
返程(PageCollection)本[页];
}
}
然后,你需要做一个PageCollection类。所有我见过的例子是pretty的很多相同的,从而只是复制<一href="http://sourceforge.net/p/nmailserver/$c$c/HEAD/tree/NMail/trunk/NMail/Configuration/NamedServiceCollection.cs"相对=nofollow>这个并重新命名NamedService到页面。
最后补充扩展ObjectConfigurationElement类:
公共类PageElement:ObjectConfigurationElement {
[的ConfigurationProperty(标题,IsRequired =真)
公共字符串名称{
得到 {
返程(串)本[标题];
}
组 {
这种[标题] =价值;
}
}
[的ConfigurationProperty(URL,IsRequired =真)
公共字符串URL {
得到 {
返程(串)本[网址];
}
组 {
这种[网址] =值;
}
}
}
下面是一些文件从一个简单的实现:
- <一个href="http://sourceforge.net/p/nmailserver/$c$c/HEAD/tree/NMail/trunk/NMail.Server.Console/NMail.config"相对=nofollow>示例配置
- <一个href="http://sourceforge.net/p/nmailserver/$c$c/HEAD/tree/NMail/trunk/NMail/Configuration/NamedServiceCollection.cs"相对=nofollow>收集和元素类
- <一个href="http://sourceforge.net/p/nmailserver/$c$c/HEAD/tree/NMail/trunk/NMail/Configuration/NMailConfiguration.cs"相对=nofollow>配置部分类
What is the correct way to pick up the list of "pages" via a class that inherits from System.Configuration.Section if I used a app.config like this?
<?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>
First you add a property in the class that extends Section:
[ConfigurationProperty("pages", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(PageCollection), AddItemName = "add")]
public PageCollection Pages {
get {
return (PageCollection) this["pages"];
}
}
Then you need to make a PageCollection class. All the examples I've seen are pretty much identical so just copy this one and rename "NamedService" to "Page".
Finally add a class that extends 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;
}
}
}
Here are some files from a sample implementation:
这篇关于自定义的app.config配置节处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!