using System; using System.Collections.Generic; namespace Gaia.FullSerializer { public abstract class fsDirectConverter : fsBaseConverter { public abstract Type ModelType { get; } } public abstract class fsDirectConverter : fsDirectConverter { public override Type ModelType => typeof(TModel); public sealed override fsResult TrySerialize(object instance, out fsData serialized, Type storageType) { Dictionary dictionary = new Dictionary(); fsResult result = DoSerialize((TModel)instance, dictionary); serialized = new fsData(dictionary); return result; } public sealed override fsResult TryDeserialize(fsData data, ref object instance, Type storageType) { fsResult success = fsResult.Success; fsResult fsResult2 = (success += CheckType(data, fsDataType.Object)); if (fsResult2.Failed) { return success; } TModel model = (TModel)instance; success += DoDeserialize(data.AsDictionary, ref model); instance = model; return success; } protected abstract fsResult DoSerialize(TModel model, Dictionary serialized); protected abstract fsResult DoDeserialize(Dictionary data, ref TModel model); } }