ConfigurationManager.GetSection跳过重复项

时间:2011-04-26 20:47:18

标签: c# .net xml configuration-files

长话短说,.Net ConfigurationManager.GetSection方法跳过重复,我正在寻找处理此问题的最佳做法。我有一个包含这样的配置文件:

   <views>
     <view name="BusinessUnitsView" Desc="desc1"/>
     <view name="BusinessUnitsView" Desc="desc2"/>
   </views>

我有一个配置加载到我们派生的ConfigurationElementCollection派生集合的对象图。在加载上述内容后,图表中的视图集合中只有一个项目 - 我的理解是这只是ConfigurationManager处理重复项的方式。具有相同键的最后一项获胜。

我可以使用BaseAdd(element,true)在找到的副本上抛出异常。但是,如果可能的话,我想让对象完全加载WITH duplicatelic,因为配置在服务层读取,我想在服务的消费方面检测并处理问题。

我是否有任何选项可以修改添加到收集工作的方式?

2 个答案:

答案 0 :(得分:1)

您需要创建自己的ConfigurationSection。请参阅herehere(第二个链接的方法已被弃用,但它可能仍有一些亮点)

这允许您将内部配置变量表示为集合,并设置DefaultValueIsRequired等属性。

答案 1 :(得分:1)

也许你只想迭代列表,但配置的主要思想是你可以做到

var view = SomeConfigClass["BusinessUnitsView"];

只允许一个答案。