質問

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"];
役に立ちましたか?

解決

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(',');

他のヒント

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>

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top