我如何从我的winform app.config得到一个部分
本文关键字:一个 我的 winform config app | 更新日期: 2023-09-27 18:03:07
我已经查看了这里的答案,但我的问题似乎与其他人报告的Null返回有些不同。
我试图从app.config中抓取一个部分,这样我就可以对每个名称/值对进行一些处理。由于类型转换问题,我似乎无法从ConfigurationManager获得集合。
使用c#和。net 4.5,我一直在尝试这个主题的变化:
AppSettingsSection sec =
(AppSettingsSection)ConfigurationManager.GetSection("appSettings");
我首先尝试将值拉回泛型,并使用预期的强制转换错误为传入集合定义类型。然而,我尝试使用的每种类型都会得到相同的错误,不能将类型abc
转换为abc
(相同类型)。
显然问题出在椅子和键盘之间,但谷歌没有帮助。什么好主意吗?
下面是app.config
的一个片段<add key="TemplatePath" value="c:'temp'templates'"/>
<add key="deployDateToken" value="[deployDate]"/>
<add key="NavigateToFolderToken" value="[NavigateToFolder]"/>
<add key="contactToken" value="[ContactInfo]"/>
你可以这样写:
public static IEnumerable<KeyValuePair<string,string>> EnumerateAppSettings()
{
return ConfigurationManager
.AppSettings
.Cast<string>()
.Select( key => new KeyValuePair<string,string>( key , ConfigurationManager.AppSettings[key] ) )
;
}
...
foreach ( KeyValuePair<string,string> item in EnumerateAppSettings() )
{
// do something
}
或者
Dictionary<string,string> appSettings = ConfigurationManager
.AppSettings
.Cast<string>()
.ToDictionary( key => key , key => ConfigurationManager.AppSettings[key] )
;
还是……最简单的:
NameValueCollection appSettings = ConfigurationManager.AppSettings ;
如果你想获得实际的AppSettingsSection
,你需要看到这个问题的答案如何获得web。
像下面这样呢
var appSettings = ConfigurationManager.AppSettings;
foreach (var key in appSettings.AllKeys)
{
appSettings[key]//do something
}