using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace SharedLibrary.Interfaces { interface ISerializable { void Write(); } public class Serialize : ISerializable { public static T Read(string filename) { try { string configText = File.ReadAllText(filename); return Newtonsoft.Json.JsonConvert.DeserializeObject(configText); } catch (Exception e) { throw new Exceptions.SerializeException($"Could not deserialize file {filename}: {e.Message}"); } } public void Write() { try { string configText = Newtonsoft.Json.JsonConvert.SerializeObject(this); File.WriteAllText(Filename(), configText); } catch (Exception e) { throw new Exceptions.SerializeException($"Could not serialize file {Filename()}: {e.Message}"); } } public static void Write(string filename, T data) { try { string configText = Newtonsoft.Json.JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented); File.WriteAllText(filename, configText); } catch (Exception e) { throw new Exceptions.SerializeException($"Could not serialize file {filename}: {e.Message}"); } } public virtual string Filename() { return ToString(); } } }