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

◆ DecodeValue()

CustomAttributeValue< TType > System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeValue ( EntityHandle constructor,
BlobHandle value )
inline

Definition at line 28 of file CustomAttributeDecoder.cs.

29 {
30 BlobHandle handle = constructor.Kind switch
31 {
32 HandleKind.MethodDefinition => _reader.GetMethodDefinition((MethodDefinitionHandle)constructor).Signature,
33 HandleKind.MemberReference => _reader.GetMemberReference((MemberReferenceHandle)constructor).Signature,
34 _ => throw new BadImageFormatException(),
35 };
36 BlobReader signatureReader = _reader.GetBlobReader(handle);
37 BlobReader valueReader = _reader.GetBlobReader(value);
38 ushort num = valueReader.ReadUInt16();
39 if (num != 1)
40 {
41 throw new BadImageFormatException();
42 }
43 SignatureHeader signatureHeader = signatureReader.ReadSignatureHeader();
44 if (signatureHeader.Kind != 0 || signatureHeader.IsGeneric)
45 {
46 throw new BadImageFormatException();
47 }
48 int count = signatureReader.ReadCompressedInteger();
49 SignatureTypeCode signatureTypeCode = signatureReader.ReadSignatureTypeCode();
50 if (signatureTypeCode != SignatureTypeCode.Void)
51 {
52 throw new BadImageFormatException();
53 }
54 ImmutableArray<CustomAttributeTypedArgument<TType>> fixedArguments = DecodeFixedArguments(ref signatureReader, ref valueReader, count);
56 return new CustomAttributeValue<TType>(fixedArguments, namedArguments);
57 }
MemberReference GetMemberReference(MemberReferenceHandle handle)
BlobReader GetBlobReader(BlobHandle handle)
MethodDefinition GetMethodDefinition(MethodDefinitionHandle handle)
ImmutableArray< CustomAttributeTypedArgument< TType > > DecodeFixedArguments(ref BlobReader signatureReader, ref BlobReader valueReader, int count)
ImmutableArray< CustomAttributeNamedArgument< TType > > DecodeNamedArguments(ref BlobReader valueReader)

References System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >._reader, System.count, System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeFixedArguments(), System.Reflection.Metadata.Ecma335.CustomAttributeDecoder< TType >.DecodeNamedArguments(), System.Reflection.Metadata.MetadataReader.GetBlobReader(), System.Reflection.Metadata.MetadataReader.GetMemberReference(), System.Reflection.Metadata.MetadataReader.GetMethodDefinition(), System.handle, System.Reflection.Metadata.SignatureHeader.IsGeneric, System.Reflection.Metadata.SignatureHeader.Kind, System.Reflection.Metadata.BlobReader.ReadCompressedInteger(), System.Reflection.Metadata.BlobReader.ReadSignatureHeader(), System.Reflection.Metadata.BlobReader.ReadSignatureTypeCode(), System.Reflection.Metadata.BlobReader.ReadUInt16(), System.Reflection.Metadata.MemberReference.Signature, System.Reflection.Metadata.MethodDefinition.Signature, and System.value.

Referenced by System.Reflection.Metadata.CustomAttribute.DecodeValue< TType >().