自定义 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 配置部分处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 app.config 中创建自定义配置部分? [复制]

为啥使用 app.config 来存储配置数据?

在 app.config 中链接自定义配置部分

如何在 app.config 中创建自定义配置部分

App.config C# 中的自定义配置部分

如何在 app.config 中为自定义部分获取智能感知?