Question

I've been working on my software lately and I have been wondering what the best way is to store an associative array.

The only thing I could come up with out of the blue is to do something like this:

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

But this doesn't offer a lot of readability in my config file and I want my config file to be readable as it is a console application.

The reason for this because I've written a program that checks the diskspace of the disks specified in the app.config file but I want different thresholds for different disks.

How would you solve it? Here's a part of my current config file.

<!-- 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"/>

I want to use the same principle for my performancecounter program that uses the perfmon counters to get some data and store it in a text file.

I hope people can help me for a bit here :)

Was it helpful?

Solution

I suggesst you to create your own configuration section. Custom configuration gives more readability and type safety. Here are links to create custom configuration http://msdn.microsoft.com/en-us/library/2tw134k3.aspx and http://haacked.com/archive/2007/03/11/custom-configuration-sections-in-3-easy-steps.aspx (old one but easy to follow).

OTHER TIPS

As far as standard configuration mechanism works with XML serialization, the best (and, IMHO, the wise) way to store dictionaries in App.config is a List<KeyValuePair<K,V>>.

you may want to use Hashtable from system.collection or List<>

below are few pointers for hashtable, http://www.dotnetperls.com/hashtable http://www.tutorialspoint.com/csharp/csharp_hashtable.htm

i hope this helps!! thanks :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top