关于.NET:自定义app.config配置节处理程序

Custom app.config Config Section Handler

如果我使用这样的app.config,那么通过继承自system.configuration.section的类获取"pages"列表的正确方法是什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="XrbSettings" type="Xrb.UI.XrbSettings,Xrb.UI" />
  </configSections>

  <XrbSettings>
    <pages>
     
     
    </pages>
  </XrbSettings>

</configuration>

首先,在类中添加扩展节的属性:

1
2
3
4
5
6
7
[ConfigurationProperty("pages", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(PageCollection), AddItemName ="add")]
public PageCollection Pages {
    get {
        return (PageCollection) this["pages"];
    }
}

然后您需要创建一个PageCollection类。我看到的所有示例都差不多相同,所以只需复制这个示例并将"namedservice"重命名为"page"。

最后添加一个扩展ObjectConfigurationElement的类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
        }
    }
}

以下是示例实现中的一些文件:

  • 样本配置
  • 集合和元素类
  • 配置节类


您还应该在codeproject上查看jon rista的.net 2.0配置上的三部分系列。

  • 揭开.NET 2.0配置的神秘面纱
  • 解码.NET 2.0配置的奥秘
  • 破解.NET 2.0配置的奥秘

强烈推荐,写得好,非常有用!


此外,如果您发现自己经常创建配置部分,那么还有配置部分设计器,一个用于设计配置部分的图形域特定语言设计器。