Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SmallObjectWithParameterizedConstructorConverter.cs
Go to the documentation of this file.
3
5
7{
8 protected override object CreateObject(ref ReadStackFrame frame)
9 {
10 JsonTypeInfo.ParameterizedConstructorDelegate<T, TArg0, TArg1, TArg2, TArg3> parameterizedConstructorDelegate = (JsonTypeInfo.ParameterizedConstructorDelegate<T, TArg0, TArg1, TArg2, TArg3>)frame.JsonTypeInfo.CreateObjectWithArgs;
13 }
14
27
29 {
32 TArg value;
33 bool result = jsonConverter.TryRead(ref reader, jsonParameterInfo2.RuntimePropertyType, jsonParameterInfo2.Options, ref state, out value);
34 arg = ((value == null && jsonParameterInfo.IgnoreDefaultValuesOnRead) ? ((TArg)jsonParameterInfo2.DefaultValue) : value);
35 return result;
36 }
37
39 {
40 JsonTypeInfo jsonTypeInfo = state.Current.JsonTypeInfo;
41 if (jsonTypeInfo.CreateObjectWithArgs == null)
42 {
43 jsonTypeInfo.CreateObjectWithArgs = options.MemberAccessorStrategy.CreateParameterizedConstructor<T, TArg0, TArg1, TArg2, TArg3>(base.ConstructorInfo);
44 }
47 for (int i = 0; i < jsonTypeInfo.ParameterCount; i++)
48 {
49 JsonParameterInfo value = list[i].Value;
50 if (value.ShouldDeserialize)
51 {
52 switch (value.ClrInfo.Position)
53 {
54 case 0:
56 break;
57 case 1:
58 arguments.Arg1 = ((JsonParameterInfo<TArg1>)value).TypedDefaultValue;
59 break;
60 case 2:
61 arguments.Arg2 = ((JsonParameterInfo<TArg2>)value).TypedDefaultValue;
62 break;
63 case 3:
64 arguments.Arg3 = ((JsonParameterInfo<TArg3>)value).TypedDefaultValue;
65 break;
66 default:
67 throw new InvalidOperationException();
68 }
69 }
70 }
72 }
73}
bool TryRead< TArg >(ref ReadStack state, ref Utf8JsonReader reader, JsonParameterInfo jsonParameterInfo, out TArg arg)
override bool ReadAndCacheConstructorArgument(ref ReadStack state, ref Utf8JsonReader reader, JsonParameterInfo jsonParameterInfo)