CustomCreationConverter<T>
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);
}
}
}