Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ DecodeNamedArgumentType()

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

Definition at line 149 of file CustomAttributeDecoder.cs.

150 {
151 ArgumentTypeInfo argumentTypeInfo = default(ArgumentTypeInfo);
152 argumentTypeInfo.TypeCode = valueReader.ReadSerializationTypeCode();
153 ArgumentTypeInfo result = argumentTypeInfo;
154 switch (result.TypeCode)
155 {
156 case SerializationTypeCode.Boolean:
157 case SerializationTypeCode.Char:
158 case SerializationTypeCode.SByte:
159 case SerializationTypeCode.Byte:
160 case SerializationTypeCode.Int16:
161 case SerializationTypeCode.UInt16:
162 case SerializationTypeCode.Int32:
163 case SerializationTypeCode.UInt32:
164 case SerializationTypeCode.Int64:
165 case SerializationTypeCode.UInt64:
166 case SerializationTypeCode.Single:
167 case SerializationTypeCode.Double:
168 case SerializationTypeCode.String:
169 result.Type = _provider.GetPrimitiveType((PrimitiveTypeCode)result.TypeCode);
170 break;
171 case SerializationTypeCode.Type:
172 result.Type = _provider.GetSystemType();
173 break;
174 case SerializationTypeCode.TaggedObject:
175 result.Type = _provider.GetPrimitiveType(PrimitiveTypeCode.Object);
176 break;
177 case SerializationTypeCode.SZArray:
178 {
179 if (isElementType)
180 {
181 throw new BadImageFormatException();
182 }
183 ArgumentTypeInfo argumentTypeInfo2 = DecodeNamedArgumentType(ref valueReader, isElementType: true);
184 result.ElementType = argumentTypeInfo2.Type;
185 result.ElementTypeCode = argumentTypeInfo2.TypeCode;
186 result.Type = _provider.GetSZArrayType(result.ElementType);
187 break;
188 }
189 case SerializationTypeCode.Enum:
190 {
191 string name = valueReader.ReadSerializedString();
192 result.Type = _provider.GetTypeFromSerializedName(name);
193 result.TypeCode = (SerializationTypeCode)_provider.GetUnderlyingEnumType(result.Type);
194 break;
195 }
196 default:
197 throw new BadImageFormatException();
198 }
199 return result;
200 }
ArgumentTypeInfo DecodeNamedArgumentType(ref BlobReader valueReader, bool isElementType=false)
readonly ICustomAttributeTypeProvider< TType > _provider

References System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >._provider, System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeNamedArgumentType(), System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.ArgumentTypeInfo.ElementType, 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 >.DecodeArgument(), System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeNamedArguments(), and System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeNamedArgumentType().