<PackageReference Include="Newtonsoft.Json" Version="11.0.1" />

CustomCreationConverter<T>

public abstract class CustomCreationConverter<T> : JsonConverter
Creates a custom object.
using System; namespace Newtonsoft.Json.Converters { public abstract class CustomCreationConverter<T> : JsonConverter { public override bool CanWrite => false; public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { throw new NotSupportedException("CustomCreationConverter should only be used while deserializing."); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) return null; T val = Create(objectType); if (val == null) throw new JsonSerializationException("No object created."); serializer.Populate(reader, val); return val; } public abstract T Create(Type objectType); public override bool CanConvert(Type objectType) { return typeof(T).IsAssignableFrom(objectType); } } }