using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using SingletonTool;
namespaceConfigurationTool.ConfigMultiple
{
//Обеспечивате доступ к конфигуpublicsealedclassMConfigurationManager<T>
whereT: class, new()
{
//Конфигprivate MConfigEntity<T> Config => SignlethonWithParams<MConfigEntity<T>, MConfigParams>.Get();
//Данные конфигаpublic Dictionary<string, T> Data
{
set => Config.Data = value;
get => Config.Data;
}
//При первом обращении необходимо использовать данный конструктор для иницилизации параметров конфигаpublicMConfigurationManager(MConfigParams param)
{
if (!SignlethonWithParams<MConfigEntity<T>, MConfigParams>.ExistInstance)
SignlethonWithParams<MConfigEntity<T>, MConfigParams>.Create(param);
}
//Для повторных обращений к конфигуpublicMConfigurationManager()
{
if (!SignlethonWithParams<MConfigEntity<T>, MConfigParams>.ExistInstance)
thrownew Exception("Use ConfigurationManager(ConfigParams param) first");
}
publicvoidAdd(string key, T value)
{
Data.Add(key, value);
Config.Export(key);
}
publicvoidRemove(string key)
{
Data.Remove(key);
var path = Config.Params.GetPathForFile(key);
if (File.Exists(path))
File.Delete(path);
}
//Прочитать из файлаpublicvoidImport()
{
Config.ImportAll();
}
//Сохранить в файлpublicvoidExport()
{
Config.ExportAll();
}
publicvoidDelete()
{
var dir = Config.Params.ConfigDirectoryInfo;
if (dir.Exists)
dir.Delete(true);
}
}
}