Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DecodeFixedArgumentType()

ArgumentTypeInfo System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeFixedArgumentType ( ref BlobReader signatureReader,
bool isElementType = false )
inlineprivate

Definition at line 97 of file CustomAttributeDecoder.cs.

98 {
99 SignatureTypeCode signatureTypeCode = signatureReader.ReadSignatureTypeCode();
100 ArgumentTypeInfo argumentTypeInfo = default(ArgumentTypeInfo);
101 argumentTypeInfo.TypeCode = (SerializationTypeCode)signatureTypeCode;
102 ArgumentTypeInfo result = argumentTypeInfo;
103 switch (signatureTypeCode)
104 {
105 case SignatureTypeCode.Boolean:
106 case SignatureTypeCode.Char:
107 case SignatureTypeCode.SByte:
108 case SignatureTypeCode.Byte:
109 case SignatureTypeCode.Int16:
110 case SignatureTypeCode.UInt16:
111 case SignatureTypeCode.Int32:
112 case SignatureTypeCode.UInt32:
113 case SignatureTypeCode.Int64:
114 case SignatureTypeCode.UInt64:
115 case SignatureTypeCode.Single:
116 case SignatureTypeCode.Double:
117 case SignatureTypeCode.String:
118 result.Type = _provider.GetPrimitiveType((PrimitiveTypeCode)signatureTypeCode);
119 break;
120 case SignatureTypeCode.Object:
121 result.TypeCode = SerializationTypeCode.TaggedObject;
122 result.Type = _provider.GetPrimitiveType(PrimitiveTypeCode.Object);
123 break;
124 case SignatureTypeCode.TypeHandle:
125 {
126 EntityHandle handle = signatureReader.ReadTypeHandle();
127 result.Type = GetTypeFromHandle(handle);
128 result.TypeCode = (SerializationTypeCode)(_provider.IsSystemType(result.Type) ? ((PrimitiveTypeCode)80) : _provider.GetUnderlyingEnumType(result.Type));
129 break;
130 }
131 case SignatureTypeCode.SZArray:
132 {
133 if (isElementType)
134 {
135 throw new BadImageFormatException();
136 }
137 ArgumentTypeInfo argumentTypeInfo2 = DecodeFixedArgumentType(ref signatureReader, isElementType: true);
138 result.ElementType = argumentTypeInfo2.Type;
139 result.ElementTypeCode = argumentTypeInfo2.TypeCode;
140 result.Type = _provider.GetSZArrayType(result.ElementType);
141 break;
142 }
143 default:
144 throw new BadImageFormatException();
145 }
146 return result;
147 }
readonly ICustomAttributeTypeProvider< TType > _provider
ArgumentTypeInfo DecodeFixedArgumentType(ref BlobReader signatureReader, bool isElementType=false)

References System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >._provider, System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeFixedArgumentType(), System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.ArgumentTypeInfo.ElementType, System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.GetTypeFromHandle(), System.handle, System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.ArgumentTypeInfo.Type, and System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.ArgumentTypeInfo.TypeCode.

Referenced by System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeFixedArguments(), and System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeFixedArgumentType().