JsonResumableConverter<T>
using System.Text.Json.Serialization.Metadata;
namespace System.Text.Json.Serialization
{
internal abstract class JsonResumableConverter<T> : JsonConverter<T>
{
public override bool HandleNull => false;
public sealed override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (options == null)
ThrowHelper.ThrowArgumentNullException("options");
ReadStack state = default(ReadStack);
JsonTypeInfo typeInfoInternal = options.GetTypeInfoInternal(typeToConvert, true, true, false, false);
state.Initialize(typeInfoInternal, false);
TryRead(ref reader, typeToConvert, options, ref state, out T value, out bool _);
return value;
}
public sealed override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
{
if (options == null)
ThrowHelper.ThrowArgumentNullException("options");
WriteStack state = default(WriteStack);
JsonTypeInfo typeInfoInternal = options.GetTypeInfoInternal(typeof(T), true, true, false, false);
state.Initialize(typeInfoInternal, null, false, false);
try {
TryWrite(writer, ref value, options, ref state);
} catch {
state.DisposePendingDisposablesOnException();
throw;
}
}
}
}