技术开发 频道

.NET 2.0 中的自定义配置处理

     节点集合

    创建派生自 ConfigurationElementCollection 的类,在派生类中必须重写(override)的抽象方法:
protected abstract ConfigurationElement CreateNewElement()
    在从配置文件加载集合时,会调用该方法以创建各个元素。重写该方法以创建特定类型的自定义 ConfigurationElement 对象。
protected abstract object GetElementKey(ConfigurationElement element)
    在派生类中重写时获取指定配置元素的键值。

    对于非默认的节点集合类,还必须重写 CollectionType 和 ElementName 只读属性的getter,其代码可能如下:
protected override string ElementName {  get {   return "dataProvider"; //"dataProvider" replace with your elementName in collection.  } } public override ConfigurationElementCollectionType CollectionType {  get {   return ConfigurationElementCollectionType.BasicMap;  } }
    可以重写 ThrowOnDuplicate 只读属性的getter,以指示当向 ConfigurationElementCollection 添加重复的 ConfigurationElement 是否会导致引发异常。默认情况,只有当该元素的 CollectionType 值为 AddRemoveClearMap 或 AddRemoveClearMapAlternate 时才会引发异常,如果希望非默认节点集合不接受重复项(通常如此),那么就必须重写该属性的getter,始终返回真(true)。

    请注意,键和值都相同的元素不会被视为重复元素,而是接受此类元素且不出现提示,只有键相同而值不同的元素才被视为是重复元素。原因是这些元素不会进行竞争。但是,无法添加键相同而值不同的元素,因为无法从逻辑上确定哪个竞争值有效。

    索引器的设计模式

    通常需要定义索引器的两个重载(overloads),一个接受整型数下标的可读写的索引器;一个是接受字符串键值的只读索引器。
索引器
    其他事项

    通常还需要公开一些对集合操作的方法,大致如下: 
对集合操作
    总结

    这只是我想要撰写的有关 .NET 2.0 中的基础技术篇文章中的第一篇。在这篇文章中,我介绍了有关配置方面的一些基本概念,并阐述了在 .NET 2.0 中如何定制你自己的配置处理程序,以及这过程中需要注意的一些细节问题。您已经看到,通过对 .NET 2.0 中提供的基础架构的扩展,我们可以很容易完成特性化的配置定制。
0
相关文章