Подтвердить что ты не робот

Хранить массив строк в appSettings?

Я хотел бы сохранить одномерный массив строк в качестве записи в моем appSettings. Я не могу просто выделить элементы с помощью , или |, потому что сами элементы могут содержать эти символы.

Я думал хранить массив как JSON, а затем десериализовал его с помощью JavaScriptSerializer.

Есть ли "правильный" /лучший способ сделать это?

(Моя идея JSON кажется любопытной хаки)

4b9b3361

Ответ 1

Вы можете использовать AppSettings с System.Collections.Specialized.StringCollection.

var myStringCollection = Properties.Settings.Default.MyCollection;
foreach (String value in myCollection)
{ 
    // do something
}

Каждое значение разделяется новой строкой.

Вот скриншот (немецкая IDE, но это может быть полезно в любом случае)

enter image description here

Ответ 2

Для целых чисел я нашел следующий способ быстрее.

Прежде всего создайте ключ appSettings с целыми значениями, разделенными запятыми в вашем app.config.

<add key="myIntArray" value="1,2,3,4" />

Затем разделите и преобразуйте значения в массив int с помощью LINQ

int[] myIntArray =  ConfigurationManager.AppSettings["myIntArray"].Split(',').Select(n => Convert.ToInt32(n)).ToArray();

Ответ 3

Для этой цели вы также можете использовать пользовательский раздел конфигурации /Collection. Вот пример:

<configSections>
    <section name="configSection" type="YourApp.ConfigSection, YourApp"/>
</configSections>

<configSection xmlns="urn:YourApp">
  <stringItems>
    <item value="String Value"/>
  </stringItems>
</configSection>

Вы также можете проверить эту отличную надстройку Visual Studio, которая позволяет графически создавать разделы конфигурации .NET и автоматически генерировать все требуемый код и определение схемы (XSD) для них.

Ответ 4

Для строк просто, просто добавьте следующее в свой файл web.config:

<add key="myStringArray" value="fred,Jim,Alan" />

а затем вы можете получить значение в массиве следующим образом:

myArray = ConfigurationManager.AppSettings("myStringArray").Split(",")