<PackageReference Include="System.Text.Json" Version="5.0.1" />

NullableConverterFactory

using System.Reflection; namespace System.Text.Json.Serialization.Converters { internal class NullableConverterFactory : JsonConverterFactory { public override bool CanConvert(Type typeToConvert) { return Nullable.GetUnderlyingType(typeToConvert) != (Type)null; } 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); } } }