Reputation: 2393
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"];
Upvotes: 33
Views: 78255
Reputation: 369
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);
Upvotes: 12
Reputation: 56697
You can set the type of a setting in the settings designer to StringCollection
, which allows you to create a list of strings.
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>
Upvotes: 21
Reputation: 3254
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(',');
Upvotes: 58