自定义 app.config 配置部分处理程序
Posted
技术标签:
【中文标题】自定义 app.config 配置部分处理程序【英文标题】:Custom app.config Config Section Handler 【发布时间】:2010-10-20 00:40:36 【问题描述】:如果我使用这样的 app.config,通过继承自 System.Configuration.Section 的类获取“页面”列表的正确方法是什么?
<?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>
【问题讨论】:
您还应该在 CodeProject 上查看 Jon Rista 关于 .NET 2.0 配置的三部分系列。 - Unraveling the mysteries of .NET 2.0 configuration - Decoding the mysteries of .NET 2.0 configuration - Cracking the mysteries of .NET 2.0 configuration 强烈推荐,写得很好,非常有帮助! 另外,如果您发现自己经常创建配置部分,可以使用 Configuration Section Designer,一个用于设计配置部分的图形化领域特定语言设计器。 【参考方案1】:首先你在扩展Section的类中添加一个属性:
[ConfigurationProperty("pages", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(PageCollection), AddItemName = "add")]
public PageCollection Pages
get
return (PageCollection) this["pages"];
然后你需要创建一个 PageCollection 类。我看到的所有示例都几乎相同,因此只需复制 this one 并将“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;
以下是示例实现中的一些文件:
Sample config Collection and element classes Config section class【讨论】:
链接随着时间的推移而中断 @Hoppe 如果你想要另一个示例实现,我在这里做了一个:***.com/a/33544322/1955317以上是关于自定义 app.config 配置部分处理程序的主要内容,如果未能解决你的问题,请参考以下文章