ConcurrentStackOfTConverter<TCollection, TElement>
using System.
Collections.
Concurrent;
using System.
Runtime.
CompilerServices;
using System.
Runtime.
InteropServices;
namespace System.
Text.
Json.
Serialization.
Converters
{
internal sealed class ConcurrentStackOfTConverter<
TCollection,
TElement> :
IEnumerableDefaultConverter<
TCollection,
TElement>
where TCollection :
ConcurrentStack<
TElement>
{
protected override void Add([
In] [
System.
Runtime.
CompilerServices.
IsReadOnly]
TElement value,
ref ReadStack state)
{
((
TCollection)
state.
Current.
ReturnValue).
Push(
value);
}
protected override void CreateCollection(
ref Utf8JsonReader reader,
ref ReadStack state,
JsonSerializerOptions options)
{
if (
state.
Current.
JsonTypeInfo.
CreateObject ==
null)
ThrowHelper.
ThrowNotSupportedException_SerializationNotSupported(
state.
Current.
JsonTypeInfo.
Type);
state.
Current.
ReturnValue =
state.
Current.
JsonTypeInfo.
CreateObject();
}
}
}