我希望我只是遗漏了一些简单的东西。我需要读/写我的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
方法文件时,环境为空。
有什么想法吗?
答案 0 :(得分:0)
我一直在研究字典问题并想出了this stackoverflow Q&A!它生成一个集合而不是字典,但指出了解决方案的方法。谢谢大家的时间。
答案 1 :(得分:0)
根据this old article,当使用DictionarySectionHandler
实施某个部分时,ConfigurationManager.GetSection()
将返回非通用IDictionary
,不 IDictionary<T,V>
。这就是你的演员失败的原因。
虽然在现代,看起来它实际上会返回HashTable
。