14 public override bool CanConvert(Type objectType)
16 return objectType.IsClass && objectType.IsAssignableTo(typeof(Enumeration));
19 public override object? ReadJson(JsonReader reader, Type objectType,
object? existingValue, JsonSerializer serializer)
21 if (reader.Value is
string value)
25 var result = TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value!);
26 Assert.NotNull(result, $
"'{value}' is not a valid {typeof(T).Name}");
31 throw new AggregateException($
"'{value}' is not a valid {typeof(T).Name}", e);
34 Assert.True(reader.TokenType == JsonToken.None
35 || reader.TokenType == JsonToken.Null
36 || reader.TokenType == JsonToken.Undefined,
37 $
"JSON value was neither a string, nor one of the 'not-existing' types. Token type: {reader.TokenType}; Object type: {objectType.Name};"
42 public override void WriteJson(JsonWriter writer,
object? value, JsonSerializer serializer)
44 writer.WriteValue(value?.ToString());