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

JsonParameterInfo

abstract class JsonParameterInfo
using System.Runtime.CompilerServices; namespace System.Text.Json.Serialization.Metadata { internal abstract class JsonParameterInfo { private JsonTypeInfo _jsonTypeInfo; public JsonParameterInfoValues ClrInfo; public JsonConverter ConverterBase { get; set; } private bool MatchingPropertyCanBeNull { [CompilerGenerated] set { MatchingPropertyCanBeNull = value; } } public object DefaultValue { get; set; } public bool IgnoreNullTokensOnRead { get; set; } public JsonSerializerOptions Options { get; set; } public byte[] NameAsUtf8Bytes { get; set; } public JsonNumberHandling? NumberHandling { get; set; } public JsonTypeInfo JsonTypeInfo => _jsonTypeInfo ?? (_jsonTypeInfo = Options.GetTypeInfoInternal(PropertyType, true, false)); public Type PropertyType { get; set; } public bool ShouldDeserialize { get; set; } public JsonPropertyInfo MatchingProperty { get; set; } public virtual void Initialize(JsonParameterInfoValues parameterInfo, JsonPropertyInfo matchingProperty, JsonSerializerOptions options) { MatchingProperty = matchingProperty; ClrInfo = parameterInfo; Options = options; ShouldDeserialize = true; PropertyType = matchingProperty.PropertyType; NameAsUtf8Bytes = matchingProperty.NameAsUtf8Bytes; ConverterBase = matchingProperty.EffectiveConverter; IgnoreNullTokensOnRead = matchingProperty.IgnoreNullTokensOnRead; NumberHandling = matchingProperty.EffectiveNumberHandling; MatchingPropertyCanBeNull = matchingProperty.PropertyTypeCanBeNull; } public static JsonParameterInfo CreateIgnoredParameterPlaceholder(JsonParameterInfoValues parameterInfo, JsonPropertyInfo matchingProperty, bool sourceGenMode) { JsonParameterInfo jsonParameterInfo = new JsonParameterInfo<sbyte>(); jsonParameterInfo.ClrInfo = parameterInfo; jsonParameterInfo.PropertyType = matchingProperty.PropertyType; jsonParameterInfo.NameAsUtf8Bytes = matchingProperty.NameAsUtf8Bytes; if (sourceGenMode) jsonParameterInfo.DefaultValue = matchingProperty.DefaultValue; else { Type parameterType = parameterInfo.ParameterType; JsonTypeInfo typeInfo; DefaultValueHolder defaultValueHolder = (!matchingProperty.Options.TryGetTypeInfoCached(parameterType, out typeInfo)) ? DefaultValueHolder.CreateHolder(parameterInfo.ParameterType) : typeInfo.DefaultValueHolder; jsonParameterInfo.DefaultValue = defaultValueHolder.DefaultValue; } return jsonParameterInfo; } } }