using Newtonsoft.Json; using Newtonsoft.Json.Linq; using StructureHelperCommon.Models; using System; using System.Reflection; namespace DataAccess.JsonConverters { public abstract class BaseJsonConverter : JsonConverter { private IWriteJsonLogic writeJsonLogic; private IReadJsonLogic readJsonLogic; public IShiftTraceLogger TraceLogger { get; set; } protected BaseJsonConverter(IShiftTraceLogger logger, IWriteJsonLogic writeJsonLogic, IReadJsonLogic readJsonLogic) { this.writeJsonLogic = writeJsonLogic; this.readJsonLogic = readJsonLogic; TraceLogger = logger; } protected BaseJsonConverter(IShiftTraceLogger logger) : this (logger, new WriteJsonLogic() { TraceLogger = logger}, new ReadJsonLogic() { TraceLogger = logger}) { } public override void WriteJson(JsonWriter writer, T? value, JsonSerializer serializer) { writeJsonLogic.TraceLogger = TraceLogger; writeJsonLogic.WriteJson(writer, value, serializer); } public override T ReadJson(JsonReader reader, Type objectType, T? existingValue, bool hasExistingValue, JsonSerializer serializer) { readJsonLogic.TraceLogger = TraceLogger; return readJsonLogic.ReadJson(reader, objectType, existingValue, hasExistingValue, serializer); } } }