Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
JsonMetadataServicesConverter.cs
Go to the documentation of this file.
1
using
System.Text.Json.Serialization.Metadata
;
2
3
namespace
System.Text.Json.Serialization.Converters
;
4
5
internal
sealed
class
JsonMetadataServicesConverter
<T> :
JsonResumableConverter
<T>
6
{
7
private
readonly
Func<JsonConverter<T>
>
_converterCreator
;
8
9
private
readonly
ConverterStrategy
_converterStrategy
;
10
11
private
JsonConverter<T>
_converter
;
12
13
internal
JsonConverter<T>
Converter
14
{
15
get
16
{
17
if
(
_converter
==
null
)
18
{
19
_converter
=
_converterCreator
();
20
}
21
return
_converter
;
22
}
23
}
24
25
internal
override
ConverterStrategy
ConverterStrategy
=>
_converterStrategy
;
26
27
internal
override
Type
KeyType
=>
Converter
.KeyType;
28
29
internal
override
Type
ElementType
=>
Converter
.ElementType;
30
31
internal
override
bool
ConstructorIsParameterized
=>
Converter
.ConstructorIsParameterized;
32
33
public
JsonMetadataServicesConverter
(Func<
JsonConverter<T>
>
converterCreator
,
ConverterStrategy
converterStrategy
)
34
{
35
_converterCreator
=
converterCreator
??
throw
new
ArgumentNullException
(
"converterCreator"
);
36
_converterStrategy
=
converterStrategy
;
37
}
38
39
internal
override
bool
OnTryRead
(
ref
Utf8JsonReader
reader,
Type
typeToConvert
,
JsonSerializerOptions
options
,
ref
ReadStack
state
,
out
T
value
)
40
{
41
JsonTypeInfo
jsonTypeInfo
=
state
.Current.
JsonTypeInfo
;
42
if
(
_converterStrategy
==
ConverterStrategy
.Object)
43
{
44
if
(
jsonTypeInfo
.PropertyCache ==
null
)
45
{
46
jsonTypeInfo
.InitializePropCache();
47
}
48
if
(
jsonTypeInfo
.ParameterCache ==
null
&&
jsonTypeInfo
.IsObjectWithParameterizedCtor)
49
{
50
jsonTypeInfo
.InitializeParameterCache();
51
}
52
}
53
return
Converter
.OnTryRead(
ref
reader,
typeToConvert
,
options
,
ref
state
,
out
value
);
54
}
55
56
internal
override
bool
OnTryWrite
(
Utf8JsonWriter
writer
, T
value
,
JsonSerializerOptions
options
,
ref
WriteStack
state
)
57
{
58
JsonTypeInfo
jsonTypeInfo
=
state
.Current.
JsonTypeInfo
;
59
if
(!
state
.SupportContinuation &&
jsonTypeInfo
is
JsonTypeInfo<T>
{ SerializeHandler: not null }
jsonTypeInfo2
)
60
{
61
JsonSerializerContext
context =
jsonTypeInfo2
.
Options
.
_context
;
62
if
(context !=
null
&& context.
CanUseSerializationLogic
)
63
{
64
jsonTypeInfo2
.SerializeHandler(
writer
,
value
);
65
return
true
;
66
}
67
}
68
if
(
_converterStrategy
==
ConverterStrategy
.Object &&
jsonTypeInfo
.PropertyCache ==
null
)
69
{
70
jsonTypeInfo
.InitializePropCache();
71
}
72
return
Converter
.OnTryWrite(
writer
,
value
,
options
,
ref
state
);
73
}
74
}
System.ArgumentNullException
Definition
ArgumentNullException.cs:10
System.Text.Json.JsonSerializerOptions._context
JsonSerializerContext _context
Definition
JsonSerializerOptions.cs:34
System.Text.Json.JsonSerializerOptions
Definition
JsonSerializerOptions.cs:17
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter._converterStrategy
readonly ConverterStrategy _converterStrategy
Definition
JsonMetadataServicesConverter.cs:9
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter.ConstructorIsParameterized
override bool ConstructorIsParameterized
Definition
JsonMetadataServicesConverter.cs:31
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter.JsonMetadataServicesConverter
JsonMetadataServicesConverter(Func< JsonConverter< T > > converterCreator, ConverterStrategy converterStrategy)
Definition
JsonMetadataServicesConverter.cs:33
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter._converter
JsonConverter< T > _converter
Definition
JsonMetadataServicesConverter.cs:11
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter.OnTryWrite
override bool OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, ref WriteStack state)
Definition
JsonMetadataServicesConverter.cs:56
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter.KeyType
override Type KeyType
Definition
JsonMetadataServicesConverter.cs:27
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter.ElementType
override Type ElementType
Definition
JsonMetadataServicesConverter.cs:29
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter._converterCreator
readonly Func< JsonConverter< T > > _converterCreator
Definition
JsonMetadataServicesConverter.cs:7
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter.OnTryRead
override bool OnTryRead(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options, ref ReadStack state, out T value)
Definition
JsonMetadataServicesConverter.cs:39
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter.Converter
JsonConverter< T > Converter
Definition
JsonMetadataServicesConverter.cs:14
System.Text.Json.Serialization.Converters.JsonMetadataServicesConverter
Definition
JsonMetadataServicesConverter.cs:6
System.Text.Json.Serialization.JsonConverter
Definition
JsonConverter.cs:119
System.Text.Json.Serialization.JsonResumableConverter
Definition
JsonResumableConverter.cs:4
System.Text.Json.Serialization.JsonSerializerContext.Options
JsonSerializerOptions Options
Definition
JsonSerializerContext.cs:14
System.Text.Json.Serialization.JsonSerializerContext.CanUseSerializationLogic
bool CanUseSerializationLogic
Definition
JsonSerializerContext.cs:27
System.Text.Json.Serialization.JsonSerializerContext
Definition
JsonSerializerContext.cs:8
System.Text.Json.Serialization.Metadata.JsonTypeInfo.JsonTypeInfo
JsonTypeInfo(Type type, JsonSerializerOptions options)
Definition
JsonTypeInfo.cs:30
System.Text.Json.Serialization.Metadata.JsonTypeInfo
Definition
JsonTypeInfo.cs:14
System.Text.Json.Utf8JsonWriter
Definition
Utf8JsonWriter.cs:14
System.Type
Definition
Type.cs:14
System.Text.Json.Serialization.Converters
Definition
ArrayConverter.cs:3
System.Text.Json.Serialization.Metadata
Definition
FSharpCoreReflectionProxy.cs:5
System.Text.Json.ConverterStrategy
ConverterStrategy
Definition
ConverterStrategy.cs:4
System.Text.Json.ConverterStrategy.Dictionary
@ Dictionary
System.ExceptionArgument.value
@ value
System.ExceptionArgument.options
@ options
System.ExceptionArgument.state
@ state
System.ExceptionArgument.writer
@ writer
System.Text.Json.ReadStack
Definition
ReadStack.cs:12
System.Text.Json.Utf8JsonReader
Definition
Utf8JsonReader.cs:12
System.Text.Json.WriteStack
Definition
WriteStack.cs:14
source
System.Text.Json
System.Text.Json.Serialization.Converters
JsonMetadataServicesConverter.cs
Generated by
1.10.0