Запутался в каркасе настроек приложения .Net - PullRequest
2 голосов
/ 12 декабря 2011

Будучи довольно новым для мира .Net, я очень запутался, где и как хранить настройки моего приложения в приложении WPF.

Я продолжаю видеть ссылки на Properties.Settings.Default, но это не такразрешить в моем приложении WPF, и я не могу найти, какие именно классы они представляют, чтобы найти сборку для извлечения. Это метод только для WinForms?

Я также нашел ConfigurationSettings, который выглядит какустарела и ConfigurationManager, AppSettings, ApplicationSettings и Settings!Я уверен, что многие из них работают вместе, но у меня есть реальная проблема с выбором того, что принадлежит вместе, а что старое или не имеет отношения к WPF.

Может кто-нибудь изложить основные варианты для новичка?

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

Удивлен, что никто не может ответить на этот вопрос, поэтому я сделал еще несколько копаний и документирую свои выводы здесь на случай, если кто-то еще будет так же смущен, как я:

  • ConfigurationSettings мертв. (<= .Net 1.1). Раньше он выставлял набор пар имя / значение через член <code>AppSettings.

  • ConfigurationManager является заменой (> .Net 2). Он живет в System.Configuration.dll и является основой всех новых настроек. Это статический класс, поэтому к нему можно получить доступ где угодно. Он также предоставляет набор пар имя / значение, называемых AppSettings, предположительно для обратной совместимости.

  • AppSettings не является типобезопасным, это буквально пары строк.

  • ApplicationSettings, по-видимому, относится к ApplicationSettingsBase, который является классом, используемым в качестве основы для более новых безопасных настроек типа стиля. Подклассы содержат элементы, которые соответствуют настройке. ConfigurationManager все еще используется для управления / сериализации.

  • Settings - это инструмент, сгенерированный статическим подклассом вышеупомянутого, который создается путем добавления «файла настроек» в ваш проект, который позволяет редактировать настройки во время разработки. Он генерируется в пространстве имен Properties вашего проекта, поэтому к нему можно получить доступ через Properties.Settings в любом месте вашего приложения. Несмотря на то, что WinForms упоминается во всех документах, кажется, что он также может использоваться в WPF.

Если вы не хотите использовать файл настроек, ConfigurationManager также можно использовать напрямую, используя ваши собственные пользовательские классы. Некоторые полные ссылки для обзора использования:

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

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

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

Все эти настройки отображаются в файле app.config, хотя я видел ссылки на отдельные файлы Applicationsettings, так что я могу ошибаться.

0 голосов
/ 12 декабря 2011

Если настроек для сохранения не так много, почему бы не использовать реестр Windows? Файловая система и реестр (Руководство по программированию в C #)

Нет ничего волшебного в ConfigurationManager и т. Д. Вы можете просто использовать свой собственный объект настроек и сериализовать / десериализовать его в XML и из XML.

Обратитесь к Классу приложения , чтобы узнать, каков путь данных приложения.

Что касается Properties.Settings.Default, не разрешенного в вашем приложении, Solution Explorer -> ваш проект -> Add -> New Item -> Settings File. Это автоматически сгенерирует класс Properties.Settings, что позволит вам редактировать настройки приложения во время разработки. Тогда вы сможете звонить Properties.Settings.Default.Save()

...