【问题标题】:Read all key values from app.config c#从 app.config c# 中读取所有键值
【发布时间】:2015-06-01 20:26:13
【问题描述】:

您好,我有以下 app.config 文件

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
<appSettings>
<add key="DayTime" value="08-20" />
<add key="NightTime" value="20-08" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
<add key="GridMode" value="1"/> 
</appSettings>

我需要一次性读取所有键并将其存储在Dictionary 之类的位置。

我尝试了以下代码,但给了我null

除了Cannot convert Keyvalueinternalcollection to hashtable

var section = ConfigurationManager.GetSection("appSettings") as Hashtable;

如何读取所有键及其值?

【问题讨论】:

  • &lt;add key="GridMode" value="1"&gt; 应该是&lt;add key="GridMode" value="1"/&gt;

标签: c# winforms app-config


【解决方案1】:

哈希表版本。

Hashtable table = new Hashtable((from key in System.Configuration.ConfigurationManager.AppSettings.Keys.Cast<string>()
                                 let value= System.Configuration.ConfigurationManager.AppSettings[key]
                                 select new { key, value }).ToDictionary(x => x.key, x => x.value));

评论其他答案

System.Configuration.ConfigurationManager.AppSettings 是预定义的“appSettings”部分,使用它。

【讨论】:

    【解决方案2】:

    不要转换为Hashtable,而是转换为IEnumerable

    var section = ConfigurationManager.GetSection("appSettings");
    
    foreach (var kvp in section as IEnumerable)
    {
        //TODO
    }
    

    【讨论】:

      【解决方案3】:

      我认为你可以这样做:

      var loc=(NameValueCollection)ConfigurationSettings.GetSection("appSettings");
      var dic=new Dictionary<string,string>();
      foreach (var element in loc.AllKeys)
      {
          dic.Add(element, loc[k]);
      }
      

      【讨论】:

        【解决方案4】:
        var section = ConfigurationManager.GetSection("appSettings")
        

        应该够了。

        【讨论】:

          猜你喜欢
          • 2023-04-08
          • 2020-06-10
          • 2021-07-08
          • 2012-10-14
          • 2017-06-23
          • 2016-01-07
          • 1970-01-01
          • 2011-01-24
          • 2013-09-13
          相关资源
          最近更新 更多