NET Framework 2.0 позволяет сохранять и извлекать данные, к которым нужен доступ между запусками приложения. Подобные данные называются settings (конфигурационные настройки). Настройки бывают пользовательскими и программными. Например, можно сохранять в настройках цвет формы, шрифтов, учитывая предпочтения пользователя программы. Также вы можете сохранять строку соединения с базой данных и так далее.
Программисты C# могут для сохранения настроек использовать пространство имен Properties. Рассмотрим эту возможность подробнее: узнаем разницу между пользовательскими и программными настройками, как создавать настройки во время разработки, как получить доступ к настройкам во время выполнения приложения и т.д.
Настройки имеют четыре свойства:
Названия этих свойств говорят сами за себя. Name, Type и Value понятны любому программисту, а свойство Scope требует некоторого объяснения. Выше уже говорилось, что настройки бывают программными и пользовательскими. Настройки приложения не зависят от пользователя и требуются для самого приложения. Пользовательские настройки на саму программу влияют меньше и более безопасны по своей сути.
Пользовательские настройки доступны для чтения/записи во время исполнения программы и значения настроек можно изменять и сохранять в коде. Программные настройки во время исполнения доступны только для чтения. Изменять настройки можно только во время разработки или изменяя вручную файл настроек.
Вы можете создать новую настройку во время разработки приложения, используя дизайнер Setting, который имеет сеточный (grid) интерфейс. С помощью данного дизайнера вы можете задать новую настройку и установить нужные значения для Name, Type, Scope и Value. После создания настройки, вы можете обращаться к ней при помощи механизма, описанного ниже.
Таким же образом вы можете использовать дизайнер Settings для изменения уже существующих значений настроек.
Иногда возникает потребность изменить настройки уже после компиляции. Например, вы хотите изменить строку соединения к новой базе данных. В этом случае вы можете вручную изменить значение в файле.
<setting name="Setting" serializeAs="String"> <value>This is the setting value </setting>
Настройки доступны для приложения через код во время работы. Вы можете получить значение настройки или записать новое значение, используя пространство имен Properties.
Вы можете прочитать программно настройки при помощи пространства имен Properties, которое хранит настройки по умолчанию в объекте Properties.Settings.Default. Когда вы пишете код, который использует эти настройки, они появляются в IntelliSense и строго типизированы. Таким образом, если вы в настройках используете тип System.Drawing.Color, то может использовать тип без приведения типов, как показано ниже:
this.BackColor = Properties.Settings.Default.myColor;
Пользовательские настройки можно менять во время исполнения, просто изменяя нужные значения. Новые значения действуют, пока выполняется программа. Если вы хотите сохранить измененные настройки, то вызывайте метод Settings.Save. Настройки будут сохранены в файле *.config.
Для доступа к пользовательской настройке и присвоения нового значения используйте код:
Properties.Settings.Default.myColor = Color.AliceBlue;
Для сохранения измененной настройки к следующему запуску программы используйте Save:
Properties.Settings.Default.Save();
В некоторых случаях требуется сохранять несколько наборов настроек. Например, если вы разрабатываете приложение, в котором определенные настройки изменяются очень часто, то, возможно, имеет смысл вынести эти настройки в другой файл. В таком случае можно будет вносить изменения в созданный файл, не затрагивая другие настройки, не требующие частого изменения. Visual Studio 2008 позволяет добавлять дополнительные наборы настроек в проект. Например, вы можете добавить новый набор настроек под именем SpecialSettings, и далее получать доступ в коде через объект Properties.SpecialSettings.
Источник:
Перевод: Василий Котов и Александр Климов