当您使用应用程序的当前配置文件时,从使用由 System.Configuration.NameValueSectionHandler 定义的部分的配置文件中获取值很容易。
示例配置文件。
<configuration>
<configSections>
<section name="MyParams" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<MyParams>
<add key="FirstParam" value="One"/>
<add key="SecondParam" value="Two"/>
</MyParams>
</configuration>
易于阅读的示例代码。
NameValueCollection myParamsCollection =
ConfigurationManager.GetSection("MyParams") as NameValueCollection;
这是不起作用的代码。
NameValueCollection collection =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
.GetSection("MyParams") as NameValueCollection;
这在编译时失败并出现以下错误。
无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换将类型“System.Configuration.ConfigurationSection”转换为“System.Collections.Specialized.NameValueCollection”。
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 返回 System.Configuration.Configuration,Configuration.GetSection 返回 ConfigurationSection。
ConfigurationManager.GetSection 返回对象。
那么,当我必须使用 OpenExeConfiguration 时,如何取回我的 NameValueCollection?