Я решил это частично, но мне пришлось предположить, что мои настройки лежат в определенной части (appSettings) файла.Я мог бы обойтись без этого, потому что, хотя настройки были логически пользовательскими настройками, у каждого пользователя уже есть свой собственный файл конфигурации.
Файл конфигурации Microsoft - это специально структурированный файл XML, у Microsoft есть отдельная сборка для работы.с одной, System.Configuration, и я действительно ожидал, что любой участник знал бы это, конечно, если бы они чувствовали, что знают достаточно, чтобы внести свой вклад вообще.Так что предложения, основанные на System.Xml и более ранних версиях System.IO, насколько мне было известно, просто получили букву "F".Я воспринял их как в основном шутливые, и мне остается удивляться, почему кто-то участвует в сайте обмена информацией, если не быть полезным.Но в любом случае мое решение опирается на System.Configuration.
Для краткости в псевдокоде:
- Я могу использовать ConfigurationManager.OpenMappedExeConfiguration, чтобы открыть любой старый файл.Это, я думаю, хорошо известно, и возвращает объект конфигурации, который представляет собой логическое представление файла.Забавно, что даже если файл не существует на диске, Конфигурация не равна нулю.
- Предполагая, что мои настройки лежат в разделе appSettings файла, я могу просто использовать полученное свойство AppSettings Конфигурацииотточить в соответствующем разделе.Кажется, я помню, что мой старый код поддерживал любой раздел, что сильно увеличивало код.Опять же, даже если файл не существует физически, Configuration.AppSettings был допустимым объектом.
- Когда у меня есть свойство раздела настроек приложения, я могу посмотреть на свойство .Settings, чтобы увидеть, какие значения есть.appSettingsSection.Settings - это в основном словарь пар key.value, обозначаемый как (Microsoft) KeyValueConfigurationCollection.Если файл не существует, appSettings.Settings указывает на совершенно допустимую, но пустую коллекцию
- . Я могу увидеть, существует ли мой ключ, просто выполнив стандартный словарь. Содержит вызов моего ElementCollection.AllKeys.свойство
- Имейте в виду, что здесь мы имеем дело с парами ключ / значение.Если мы работаем с существующим ключом, мы просто получаем / устанавливаем элемент [key] .Value, тогда как если мы пишем новый ключ, мы должны создать новый (Microsoft) KeyValueConfigurationElement и добавить его в коллекцию.Этот класс имеет удобный конструктор, который просто принимает ключ (string) и значение (string).Еще одна вещь, которую сделал мой исходный код, состояла в том, чтобы читать / записывать любой сериализуемый объект, гораздо больше, чем мне нужно в этот раз.
- Если я пишу, мне нужно помнить в последнюю очередь, чтобы сохранить конфигурацию,Если вы пишете, файл либо обновлен, либо создан чистый.
Вот и все.Я предполагаю, что кто-либо из текущих читателей уже знал все это, но я надеюсь, что это могло бы быть полезным для будущих читателей.Я нашел, что это было полезно сравнить, потребовалось некоторое время, чтобы собрать все воедино, так что, надеюсь, это сэкономит как минимум время людям.
Кстати, я не мог поделиться оригинальным кодом, потому что у меня нет ни самого кода, ни авторских прав.В моей юрисдикции работодатель / клиент обычно владеет кодом, написанным сотрудником / консультантом, по крайней мере, работая в свое время, и я не был исключением.Но у меня есть только опыт Великобритании и США, поэтому другие юрисдикции могут отличаться.И люди, которые профессионально не участвуют в разработке программного обеспечения, могут подчиняться другим правилам.И наконец, за многие годы я обнаружил, что многие разработчики программного обеспечения вообще не знают юридических вопросов.