我如何从我的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]"/>

我如何从我的winform app.config得到一个部分

你可以这样写:

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
}
相关文章: