<PackageReference Include="System.Text.Json" Version="6.0.0-preview.2.21154.6" />

NullableConverterFactory

using System.Reflection; namespace System.Text.Json.Serialization.Converters { internal class NullableConverterFactory : JsonConverterFactory { public override bool CanConvert(Type typeToConvert) { return typeToConvert.IsNullableOfT(); } public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) { Type type = typeToConvert.GetGenericArguments()[0]; JsonConverter converter = options.GetConverter(type); if (!converter.TypeToConvert.IsValueType && type.IsValueType) return converter; return CreateValueConverter(type, converter); } public static JsonConverter CreateValueConverter(Type valueTypeToConvert, JsonConverter valueConverter) { return (JsonConverter)Activator.CreateInstance(typeof(NullableConverter<>).MakeGenericType(valueTypeToConvert), BindingFlags.Instance | BindingFlags.Public, null, new object[1] { valueConverter }, null); } } }