2017-05-26 18:49:27 -04:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
2018-04-08 02:44:42 -04:00
|
|
|
|
namespace SharedLibraryCore.Interfaces
|
2017-05-26 18:49:27 -04:00
|
|
|
|
{
|
|
|
|
|
interface ISerializable<T>
|
|
|
|
|
{
|
|
|
|
|
void Write();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class Serialize<T> : ISerializable<T>
|
|
|
|
|
{
|
|
|
|
|
public static T Read(string filename)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string configText = File.ReadAllText(filename);
|
|
|
|
|
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(configText);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
2017-06-12 20:24:12 -04:00
|
|
|
|
throw new Exceptions.SerializeException($"Could not deserialize file {filename}: {e.Message}");
|
2017-05-26 18:49:27 -04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Write()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string configText = Newtonsoft.Json.JsonConvert.SerializeObject(this);
|
|
|
|
|
File.WriteAllText(Filename(), configText);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
2017-06-06 23:45:21 -04:00
|
|
|
|
throw new Exceptions.SerializeException($"Could not serialize file {Filename()}: {e.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void Write(string filename, T data)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2018-02-10 23:33:42 -05:00
|
|
|
|
string configText = Newtonsoft.Json.JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented);
|
2017-06-06 23:45:21 -04:00
|
|
|
|
File.WriteAllText(filename, configText);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
throw new Exceptions.SerializeException($"Could not serialize file {filename}: {e.Message}");
|
2017-05-26 18:49:27 -04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-06-06 23:45:21 -04:00
|
|
|
|
public virtual string Filename() { return ToString(); }
|
2017-05-26 18:49:27 -04:00
|
|
|
|
}
|
|
|
|
|
}
|