Сохраните набор значений в конфигурационном файле

StackOverflow https://stackoverflow.com/questions/702270

  •  22-08-2019
  •  | 
  •  

Вопрос

В службе .Net 3.5 (Windows) я хотел бы сохранить небольшую коллекцию значений в файле конфигурации.По сути, мне нужно разрешить администраторам добавлять и удалять значения из этой небольшой коллекции.Что мне нужно добавить в конфигурационный файл для хранения коллекции небольших значений, и как я могу прочитать коллекцию на C #?

Чтобы уточнить, коллекция, которую я ищу, - это данные, подобные этому:

<Illegal Characters>
  <CustomCollection value="?"/>
  <CustomCollection value="#"/>
  <CustomCollection value=","/>
</Illegal Characters>
Это было полезно?

Решение

Есть хорошая статья о создании пользовательского обработчика раздела конфигурации, который загружает значения в виде списка здесь.

В основном ваш IConfigurationSectionHandlerметод Create должен выглядеть примерно так:

public object Create(object parent, object configContext, XmlNode section)
{
    IList<string> illegal = new List<string>();
    XmlNodeList processesNodes= section.SelectNodes("CustomCollection");

    foreach (XmlNode child in processesNodes)
    {
        illegal.Add(child.Attributes["value"].InnerText);
    }
    return illegal;
}

Другие советы

В качестве альтернативы вы могли бы сохранить одну строку недопустимых символов в качестве регулярного выражения в вашем конфигурационном файле.Таким образом, вам не нужно перебирать символы, чтобы проверить, используются ли они в данной строке - вы могли бы выполнить сравнение на основе регулярного выражения.Это могло бы немного сэкономить процессор и сложность.

Конечно, проще использовать отдельные XML-узлы, если администраторы собираются редактировать файл напрямую.Но если они меняют список символов через само приложение, регулярное выражение может быть хорошим.

Если количество значений невелико и связанные с ними имена фиксированы, вы должны иметь возможность сохранять их в разделе конфигурации AppSettings и ссылаться на них с помощью Конфигурационный менеджер.Коллекция приложений.Это будет довольно хорошо работать для стандартных пар ключ-значение.Если ваши данные более сложны, чем это, вы можете захотеть определить свой собственный раздел конфигурации и связанный с ним Обработчик конфигураций разделов чтобы преобразовать данные в любой пользовательский объект, который вы хотите.Вы также, вероятно, захотите реализовать Просмотр файловой системы для обнаружения изменений в файле конфигурации и обновления конфигурации запущенного приложения, если только не допустимо запускать / останавливать службу, чтобы применить новую конфигурацию.

Я опишу способ в VB.NET , потому что я уверен, что способ C # очень похож или одинаковый в некоторых случаях.Откройте файл settings.настройки в разделе Мой проект в Обозревателе решений.Добавьте в настройки, которые вы хотите, например, "OutputPath".Затем, в коде, ссылайтесь на него с помощью

variable = My.Settings.OutputPath

' If a user modifiable setting, you can use:
My.Settings.OutputPath = variable
My.Settings.Save()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top