Как сохранить пары ключ-значение в настройках приложения во время выполнения?
-
05-07-2019 - |
Вопрос
Как динамические пары ключ-значение объектов могут храниться в app.config при использовании api настроек приложения во время выполнения?
Я пытался разобраться в себе, но не смог найти ни одного значимого примера или документации.
Мне кажется, что.Классы сетевого словаря не могут быть сериализованы в XML, чтобы сохранить их в app.config
Единственный способ сделать это - использовать пользовательские XML-сериализованные классы, или есть какие-то другие способы?
Решение 2
После еще нескольких поисков в сети я нашел очень хорошую (хотя и очень длинную) статью, которая описывает в отделе .Модель конфигурации сети:
Разгадка тайн конфигурации .NET 2.0
Я также нашел кое-что очень полезное:
Конструктор Разделов конфигурации
Добавление Visual Studio для визуального проектирования разделов конфигурации и генерации основных XSD-файлов.Я надеюсь, что кто-нибудь найдет это полезным.
Другие советы
Вы должны быть в состоянии сделать что-то вроде этого:
// 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);
Всегда думал, что изменение app.config во время выполнения программы считается плохой практикой. App.config должен использоваться для установки и настройки программы; не для динамических вещей, которые приложение на самом деле модифицирует.
Предлагаем вам создать отдельный " KeyValue.xml " файл для динамических объектов.
В зависимости от того, что именно вам нужно, вы можете попробовать System.Collections.ObjectModel.KeyedCollection < TKey, TValue > ;. Это работает только в том случае, если вы можете получить ключ для элемента из самого элемента, но в этом случае это хорошо для этой цели.
Это общий словарь? Если так: