本人现在在一家游戏公司,最近在做一个项目,需要做一个GM的管理后台,需要调用其他公司提供的接口,来实现后台管理的操作
由于接口地址都是固定的,所以想到使用自定义节点,来将接口都配置到web.config中。
很快,v1.0版本出炉:
在web.config中的配置方式为:
这时候又看了一遍需求文档,发现有说明不同平台的接口地址是不一样的,但接口做的事情是一样的。
然后就开始想,如果接着在下边追加,则不同平台的同一接口的名称是不能相同的。
所以想到的理想的配置方式为:
但是sources 名称的节点只能出现一次…好吧,蛋疼了。
研究尝试了一上午也没有找到合适的解决方式,又懒得再重新写一套代码来读取XML,…开始在网上搜解决方案
用中文做关键字找不着…翻了墙,用英文来当关键字 one or more ConfigurationElementCollection…
最终在一老外的博客里找到了一个替代的解决方案,最终的配置为:
C#代码如下:
本人的开发环境为 .net framework 4.0
最初 RequestConfigSection 类中的 ConfigCollection 和 RequestConfigType 类中的 SourceCollection 没有定义 ConfigurationCollection 特性
而是在 RequestConfigTypeCollection 和 RequestConfigTypeCollection 中重载了 ElementName 属性,返回子级的节点名。
结果抛出节点名未定义的异常…
改由特性 ConfigurationCollection 定义,并给特性属性 AddItemName 赋值为子级的节点名 解决…
老外博客地址: http://tneustaedter.blogspot.com/2011/09/how-to-create-one-or-more-nested.html 需要FQ访问
或者直接看这儿,俺给Copy出来了: http://www.cnblogs.com/efenghuo/articles/4022836.html
自定义ConfigurationSection,创建多个嵌套的ConfigurationElementCollection节点