ConfigEntity.cs

66 lines | 1.475 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 RW_Tool;
using RW_Tool.DataSource.FileOrStream;

using ConfigurationTool.Serializer;
using SingletonTool;

using RW_Tool.Interface;

using ConfigurationTool.Config;

namespace ConfigurationTool.Config.Custom
{

    internal class ConfigEntity<T1, T2>
        : ISignlethonWithParams<ConfigParams<T1, T2>>
        where T1 : class, new()
        where T2 : class, new()
    {
        //Параметры конфига
        public ConfigParams<T1, T2> Params { private set; get; }

        //Объект сериализации
        I_RWI<T1, DS_FileOrStream> Serializer;


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

        public void SetParams(ConfigParams<T1, T2> param)
        {
            Params = param;

            Serializer = new SerializerFactory()
               .GetSerializer_Custon<T1, T2>(
               param.ConfigPath,
               param.Format,
               param.Transformator
               );

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

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

}