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

◆ DecodeArgument()

CustomAttributeTypedArgument< TType > System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeArgument ( ref BlobReader valueReader,
ArgumentTypeInfo info )
inlineprivate

Definition at line 202 of file CustomAttributeDecoder.cs.

203 {
204 if (info.TypeCode == SerializationTypeCode.TaggedObject)
205 {
206 info = DecodeNamedArgumentType(ref valueReader);
207 }
208 object value;
209 switch (info.TypeCode)
210 {
211 case SerializationTypeCode.Boolean:
212 value = valueReader.ReadBoolean();
213 break;
214 case SerializationTypeCode.Byte:
215 value = valueReader.ReadByte();
216 break;
217 case SerializationTypeCode.Char:
218 value = valueReader.ReadChar();
219 break;
220 case SerializationTypeCode.Double:
221 value = valueReader.ReadDouble();
222 break;
223 case SerializationTypeCode.Int16:
224 value = valueReader.ReadInt16();
225 break;
226 case SerializationTypeCode.Int32:
227 value = valueReader.ReadInt32();
228 break;
229 case SerializationTypeCode.Int64:
230 value = valueReader.ReadInt64();
231 break;
232 case SerializationTypeCode.SByte:
233 value = valueReader.ReadSByte();
234 break;
235 case SerializationTypeCode.Single:
236 value = valueReader.ReadSingle();
237 break;
238 case SerializationTypeCode.UInt16:
239 value = valueReader.ReadUInt16();
240 break;
241 case SerializationTypeCode.UInt32:
242 value = valueReader.ReadUInt32();
243 break;
244 case SerializationTypeCode.UInt64:
245 value = valueReader.ReadUInt64();
246 break;
247 case SerializationTypeCode.String:
248 value = valueReader.ReadSerializedString();
249 break;
250 case SerializationTypeCode.Type:
251 {
252 string name = valueReader.ReadSerializedString();
253 value = _provider.GetTypeFromSerializedName(name);
254 break;
255 }
256 case SerializationTypeCode.SZArray:
257 value = DecodeArrayArgument(ref valueReader, info);
258 break;
259 default:
260 throw new BadImageFormatException();
261 }
262 return new CustomAttributeTypedArgument<TType>(info.Type, value);
263 }
ImmutableArray< CustomAttributeTypedArgument< TType > >? DecodeArrayArgument(ref BlobReader blobReader, ArgumentTypeInfo info)
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 >.DecodeArrayArgument(), System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeNamedArgumentType(), System.info, and System.value.

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