using System.Text.Json; using System.Text.Json.Serialization; using Milimoe.FunGame.Core.Interface.Base; namespace Milimoe.FunGame.Core.Library.Common.Architecture { public abstract class BaseEntityConverter : JsonConverter, IEntityConverter { public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { T? result = default; while (reader.Read()) { if (reader.TokenType == JsonTokenType.EndObject) break; if (reader.TokenType == JsonTokenType.PropertyName) { string propertyName = reader.GetString() ?? ""; reader.Read(); ReadPropertyName(ref reader, propertyName, options, ref result); } } return result; } public abstract void ReadPropertyName(ref Utf8JsonReader reader, string propertyName, JsonSerializerOptions options, ref T? result); } }