Как сохранить пары ключ-значение в настройках приложения во время выполнения? - PullRequest
4 голосов
/ 07 октября 2008

Как можно хранить динамические пары объектов и ключей в app.config при использовании параметров приложения api во время выполнения?

Я пытался разобраться, и я не могу найти какой-либо значимый пример или документацию.

Мне кажется, что классы словаря .Net нельзя сериализовать в XML, чтобы сохранить их в app.config

Это единственный способ сделать это с помощью пользовательских сериализованных классов XML или есть другие способы?

Ответы [ 5 ]

2 голосов
/ 08 октября 2008

После еще нескольких поисков в сети я нашел очень хорошую (хотя и очень длинную) статью, которая описывает в отделе модель конфигурации .Net:

Раскрытие тайн конфигурации .NET 2.0

Я также нашел кое-что очень полезное:

Конструктор разделов конфигурации

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

2 голосов
/ 07 октября 2008

Вы должны быть в состоянии сделать что-то вроде этого:

// Open App.Config of executable
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// Add an Application Setting with a name Key and a Value stored in variable called Value
config.AppSettings.Settings.Add("Key", Value );

// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);
1 голос
/ 07 октября 2008

Всегда считал плохой практикой изменять app.config во время выполнения. App.config должен использоваться для установки и настройки программы; не для динамических вещей, которые приложение на самом деле модифицирует.

Предлагаем вам создать отдельный файл "KeyValue.xml" для динамических объектов.

0 голосов
/ 07 октября 2008

Это общий словарь? Если так:

XML-сериализуемый универсальный словарь

0 голосов
/ 07 октября 2008

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

...