GetSection对象无法转换为IDictionary<>

时间:2012-01-21 12:24:16

标签: c# configuration app-config configurationsection

我希望我只是遗漏了一些简单的东西。我需要读/写我的exe.config文件的一部分。我的代码中有这个:

var appConfiguration = ConfigurationManager.OpenExeConfiguration("Mytest.Console.exe");
var fileEnvironment = appConfiguration.GetSection("fileEnvironment");

这是我的app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="fileEnvironment" type="System.Configuration.DictionarySectionHandler"/>
    </configSections>

    <fileEnvironment>
        <add key="TestEntry1" value="A nice value"/>
        <add key="TestEntry2" value="Another value"/>
    </fileEnvironment>
</configuration>

我的appConfiguration变量以{System.Configuration.Configuration}的形式返回,“HasFile”属性设置为true。

不投射我的变量“fileEnvironment”将返回System.Configuration.DefaultSection。当我将IDictionary<string, string>添加到GetSection方法文件时,环境为空。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我一直在研究字典问题并想出了this stackoverflow Q&A!它生成一个集合而不是字典,但指出了解决方案的方法。谢谢大家的时间。

答案 1 :(得分:0)

根据this old article,当使用DictionarySectionHandler实施某个部分时,ConfigurationManager.GetSection()将返回非通用IDictionary IDictionary<T,V>。这就是你的演员失败的原因。

虽然在现代,看起来它实际上会返回HashTable