Сохранение настроек приложения с Singleton - C#
Формулировка задачи:
Здравствуйте. Как сохранять настройки приложения (по выбору пользователя в xml файл или реестр) с использованием паттерна Singleton?
Правильно ли я думаю, что сначала реализуем класс Singleton:
внутри пишем 2 метода для сохранения в xml и в реестр, получается так:
Дальше на форме ставим, к примеру, 2 радиобаттона (для выбора куда сохранять). И пишем обработчик для кнопки сохранения, что-то вроде этого:
Так? Или чего то не хватает? Или это вообще не правильно? Помогите
public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton GetInstance() { if(instance == null) { instance = new Singleton(); } return instance; } }
public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton GetInstance() { if(instance == null) { instance = new Singleton(); } return instance; } public void In_Regedit() { //код для сохранения в реестр } public void In_XML_file() { //код для сохранения в xml } }
if(in_regedit.Checked == true) { Singleton.GetInstance().In_Regedit(); } else if(in_xml.Checked == true) { Singleton.GetInstance().In_XML_file(); }
Решение задачи: «Сохранение настроек приложения с Singleton»
textual
Листинг программы
using System; using System.Collections.Generic; namespace Wpf_Settings.Configuration { public class AppSettings { public string Text { get; set; } } /// <summary> /// Тип репозитория /// </summary> public enum RepositoryType { Unknown, Xml, Registry } public class SettingsManager { private static readonly SettingsManager _instance; private Dictionary<RepositoryType, ISettingsRepository> _repositories; private ISettingsRepository _currentRepository; private AppSettings _settings; /// <summary> /// Статический конструктор, нет в данном случае делать ленивую инициализацию, /// так как сразу же при старте приложения она и так происходит и смысла потом /// каждое обращение к свойству <see cref="Instance"/> проверять его на null нет. /// </summary> static SettingsManager() { _instance = new SettingsManager(); } /// <summary> /// Проинициализировать репозитории. /// </summary> /// <param name="repositories"></param> public void Initialize(Dictionary<RepositoryType, ISettingsRepository> repositories) { if (_repositories != null) { throw new Exception("_repositories уже был проинициализирован"); } _repositories = repositories; } /// <summary> /// Единственный экземпляр менеджера настроек /// </summary> public static SettingsManager Instance { get { return _instance; } } /// <summary> /// Настройки приложения /// </summary> public AppSettings Settings { get { return _settings; } } /// <summary> /// Выбрать репозиторий /// </summary> /// <param name="type"></param> public void ChooseRepository(RepositoryType type) { _currentRepository = _repositories[type]; } /// <summary> /// Загрузить настройки /// </summary> public void LoadSettings() { _settings = _currentRepository.Load(); } /// <summary> /// Сохранить настройки /// </summary> public void SaveSettings() { _currentRepository.Save(Settings); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д