С# App.Config с массивом или списком как данные
Как получить массив или список как информацию в app.config? Я хочу, чтобы пользователь мог разместить как можно больше IP-адресов (или по мере необходимости). Моя программа просто возьмет все, что указано в app.config. Как это сделать?
<?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"];
Ответы
Ответ 1
Самый простой способ - это список, разделенный запятыми, в вашем файле App.config. Конечно, вы можете написать свой собственный раздел конфигурации, но зачем это делать, если это всего лишь массив строк, сохраните его просто.
<configuration>
<appSettings>
<add key="ips" value="z,x,d,e" />
</appSettings>
</configuration>
public string[] ipArray = ConfigurationManager.AppSettings["ips"].Split(',');
Ответ 2
Вы можете установить тип параметра в конструкторе параметров StringCollection
, который позволяет вам создать список строк.
Вы можете позже получить доступ к отдельным значениям как Properties.Settings.Default.MyCollection[x]
.
В файле app.config
это выглядит следующим образом:
<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>
Ответ 3
В App.config,
<add key="YOURKEY" value="a,b,c"/>
В С#
STRING ARRAY:
string[] InFormOfStringArray = ConfigurationManager.AppSettings["YOURKEY"].Split(',').Select(s => s.Trim()).ToArray();
СПИСОК:
List<string> list = new List<string>(InFormOfStringArray);