在app.config中存储关联数组的最佳方法

时间:2012-07-27 05:04:02

标签: c# configuration app-config system.configuration

我最近一直在研究我的软件,我一直想知道存储关联数组的最佳方法是什么。

我唯一能想到的就是做这样的事情:

<add key="disks" value="C|1|10,D|2|20,E|1|5,Z|1|3"/>

但是这在我的配置文件中没有提供很多可读性,我希望我的配置文件可以读取,因为它是一个控制台应用程序。

之所以这样,是因为我编写了一个程序,用于检查app.config文件中指定的磁盘的磁盘空间,但我想为不同的磁盘设置不同的阈值。

你会如何解决? 这是我当前配置文件的一部分。

<!-- DISK FEATURE SETTINGS -->
  <!-- Type 1 is threshold by percentage and type 2 is threshold by a certain limit -->
  <add key="threshold_type" value="1" />
  <add key="threshold_limit" value="0,1" />
  <!-- Space_type defines if you want to limit using kilobytes (1), megabytes (2) or gigabytes (3) if using threshold_type 2 -->
  <add key="space_type" value="3" />
  <!-- Put the disks here delimited by a comma like this: C,D,E -->
  <add key="disks" value="C,D,E,Z"/>
<!-- SERVICE FEATURE SETTINGS -->
  <!-- Put the services here delimited by a comma like this: C,D,E -->
  <add key="services" value="spooler,ekrn,RadeonPro Support Service,TeamViewer6"/>
  <!-- Put this on 1 if you want to log your output to a text file -->
  <add key="logging" value="1"/>

我想对我的performancecounter程序使用相同的原理,该程序使用perfmon计数器来获取一些数据并将其存储在文本文件中。

我希望人们能在这里帮助我一点:)

3 个答案:

答案 0 :(得分:4)

我建议您创建自己的配置部分。自定义配置提供更多可读性和类型安全性。以下是创建自定义配置的链接 http://msdn.microsoft.com/en-us/library/2tw134k3.aspxhttp://haacked.com/archive/2007/03/11/custom-configuration-sections-in-3-easy-steps.aspx(旧的但很容易理解)。

答案 1 :(得分:1)

就标准配置机制与XML序列化一起使用时,在App.config中存储词典的最佳(以及恕我直言,明智的)方式是List<KeyValuePair<K,V>>

答案 2 :(得分:0)

您可能希望从system.collection或List&lt;&gt;使用Hashtable

下面是哈希表的几个指针, http://www.dotnetperls.com/hashtable http://www.tutorialspoint.com/csharp/csharp_hashtable.htm

我希望这有帮助!!谢谢:))