Вы можете реализовать свой класс пользовательских настроек, унаследовав ApplicationSettingsBase . Для начала вы можете добавить файл пользовательских настроек по умолчанию в пример проекта (щелкните правой кнопкой мыши проект -> Properties
-> Settings
-> This project does not contain a default settings file. Click here to create one.
). Добавьте пользовательскую настройку и изучите структуру созданного дизайнером файла Settings.Designer.cs:
namespace ConsoleApplication1.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("John Doe")]
public string Name {
get {
return ((string)(this["Name"]));
}
set {
this["Name"] = value;
}
}
}
}
В вашей пользовательской реализации вы не будете ограничены сгенерированными дизайнером модификаторами доступа, поэтому вы можете реализовать класс Settings как внутренний с внутренними установщиками, видимыми только для необходимых сборок или для того, что соответствует вашим потребностям.
Конечно, вы всегда можете реализовать свой собственный механизм сериализации / десериализации, но вы потеряете функциональность, предоставляемую методами ApplicationSettingsBase Updgrade, Reload и Reset. Если вам не нужно ничего из этого, это может быть более чистый подход.