ConfigEntity.cs

55 lines | 1.385 kB Blame History Raw Download
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.IO;

using ConfigurationTool.Serializer;
using SingletonTool;

namespace ConfigurationTool
{
    //Singlethon сущность конфига 
    public class ConfigEntity<T>
        : ISignlethonWithParams<ConfigParams>
        where T : class, new()
    {
        //Параметры конфига
        public ConfigParams Params { private set; get; }

        //Объект сериализации
        private ISerializer<T> Serializer;

        //Данные, хранимые в конфиге
        public T Data { set; get; } = new T();

        public void SetParams(ConfigParams param)
        {
            Params = param;

            switch (param.Format)
            {
                case EnumFormat.XML: Serializer = new XMLSerializer<T>(); break;
                case EnumFormat.Binary: Serializer = new BinarySerializer<T>(); break;
            }

            if (File.Exists(Params.ConfigPath))
                Import();
            Export();
        }

        //Прочитать файл
        public void Import()
        {
            Data = Serializer.Import(Params.ConfigPath);
        }
        //Сохранить в файл
        public void Export()
        {
            Serializer.Export(Data, Params.ConfigPath);
        }
    }
}