34

How to have array or list like information in app.config? I want user to be able to put as many IPs as possible (or as needed). My program would just take whatever specified in app.config. How to do this?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="ip" value="x" />
    <add key="ip" value="y" />
    <add key="ip" value="z" />
    </appSettings>
</configuration>



public string ip = ConfigurationManager.AppSettings["ip"];
4

3 Answers 3

58

The easiest way would be a comma separated list in your App.config file. Of course you can write your own configuration section, but what is the point of doing that if it is just an array of strings, keep it simple.

<configuration>
  <appSettings>
    <add key="ips" value="z,x,d,e" />
  </appSettings>
</configuration>

public string[] ipArray = ConfigurationManager.AppSettings["ips"].Split(',');
Sign up to request clarification or add additional context in comments.

Comments

21

You can set the type of a setting in the settings designer to StringCollection, which allows you to create a list of strings.

Screenshot

You can later access individual values as Properties.Settings.Default.MyCollection[x].

In the app.config file this looks as follows:

<setting name="MyCollection" serializeAs="Xml">
<value>
    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <string>Value1</string>
        <string>Value2</string>
    </ArrayOfString>
</value>
</setting>

4 Comments

When I try and call the setting using Properties.Settings.MyCollection[x], it says An object reference is required for the non-static field, method, or property? any ideas?
ahh got it, something like "StringCollection someRegKeys = new Properties.Settings().RegKeys;"
Am error in my answer. Must be Properties.Settings.Default.xyz.
This is a nicer way to go than using string parsing. In the settings designer, use the '...' on the right of the Values field to edit the collection of strings. It gets converted to XML for you.
12

In App.config,

<add key="YOURKEY" value="a,b,c"/>

In C#,

STRING ARRAY:

string[] InFormOfStringArray = ConfigurationManager.AppSettings["YOURKEY"].Split(',').Select(s => s.Trim()).ToArray();

LIST :

 List<string> list = new List<string>(InFormOfStringArray);

1 Comment

Why not use .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.