public void SetValue(object obj, object?value) { if (Type == typeof(TypeInfo) && value is string typeKey && _knownTypes.TryGetTypeInfo(typeKey, out var typeInfo)) { value = typeInfo; } PropertyInfo.SetValue(obj, value); }
public override TypeInfo?ReadJson(JsonReader reader, Type objectType, TypeInfo?existingValue, JsonSerializer serializer) { reader.CheckNotNull(nameof(reader)); serializer.CheckNotNull(nameof(serializer)); if (reader.TokenType == JsonToken.String && reader.Value is string typeKey && KnownTypesRegistry.TryGetTypeInfo(typeKey, out var typeInfo)) { return(typeInfo); } return(base.ReadJson(reader, objectType, existingValue, serializer)); }