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

JsonParameterInfo

abstract class JsonParameterInfo
namespace System.Text.Json.Serialization.Metadata { internal abstract class JsonParameterInfo { private JsonTypeInfo _runtimeTypeInfo; public JsonParameterInfoValues ClrInfo; public JsonConverter ConverterBase { get; set; } private protected bool MatchingPropertyCanBeNull { get; set; } public object DefaultValue { get; set; } public bool IgnoreDefaultValuesOnRead { get; set; } public JsonSerializerOptions Options { get; set; } public byte[] NameAsUtf8Bytes { get; set; } public JsonNumberHandling? NumberHandling { get; set; } public JsonTypeInfo RuntimeTypeInfo { get { if (_runtimeTypeInfo == null) _runtimeTypeInfo = Options.GetOrAddClass(RuntimePropertyType); return _runtimeTypeInfo; } set { _runtimeTypeInfo = value; } } public Type RuntimePropertyType { get; set; } public bool ShouldDeserialize { get; set; } public virtual void Initialize(JsonParameterInfoValues parameterInfo, JsonPropertyInfo matchingProperty, JsonSerializerOptions options) { ClrInfo = parameterInfo; Options = options; ShouldDeserialize = true; RuntimePropertyType = matchingProperty.RuntimePropertyType; NameAsUtf8Bytes = matchingProperty.NameAsUtf8Bytes; ConverterBase = matchingProperty.ConverterBase; IgnoreDefaultValuesOnRead = matchingProperty.IgnoreDefaultValuesOnRead; NumberHandling = matchingProperty.NumberHandling; MatchingPropertyCanBeNull = matchingProperty.PropertyTypeCanBeNull; } public static JsonParameterInfo CreateIgnoredParameterPlaceholder(JsonParameterInfoValues parameterInfo, JsonPropertyInfo matchingProperty, bool sourceGenMode) { JsonParameterInfo jsonParameterInfo = new JsonParameterInfo<sbyte>(); jsonParameterInfo.ClrInfo = parameterInfo; jsonParameterInfo.RuntimePropertyType = matchingProperty.RuntimePropertyType; jsonParameterInfo.NameAsUtf8Bytes = matchingProperty.NameAsUtf8Bytes; if (sourceGenMode) jsonParameterInfo.DefaultValue = matchingProperty.DefaultValue; else { Type parameterType = parameterInfo.ParameterType; JsonTypeInfo jsonTypeInfo; GenericMethodHolder genericMethodHolder = (!matchingProperty.Options.TryGetClass(parameterType, out jsonTypeInfo)) ? GenericMethodHolder.CreateHolder(parameterInfo.ParameterType) : jsonTypeInfo.GenericMethods; jsonParameterInfo.DefaultValue = genericMethodHolder.DefaultValue; } return jsonParameterInfo; } } }