繁体   English   中英

如何从winform app.config中获取部分?

[英]How do I get a section from my winform app.config?

我已经在这里查看了答案,但是我的问题似乎与其他人报告的Null返回值有所不同。

我正在尝试从app.config中抓取一部分,以便可以对每个名称/值对进行一些处理。 由于投放问题,我似乎无法从ConfigurationManager找回联系。

使用C#和.NET 4.5,我一直在尝试对该主题进行各种更改:

AppSettingsSection sec =
    (AppSettingsSection)ConfigurationManager.GetSection("appSettings");

我首先尝试将这些值拉回泛型,然后使用预期的转换错误来定义传入集合的类型。 但是,我尝试使用的每种类型都会收到相同的错误,无法将abc类型转换为abc (相同类型)。

显然问题出在椅子和键盘之间,但Google没有帮助。 有任何想法吗?

这是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.config appSettings作为ConfigurationSection而不是NameValueCollection

那下面的东西呢

var appSettings = ConfigurationManager.AppSettings;

foreach (var key in appSettings.AllKeys)
{
    appSettings[key]//do something
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM