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

◆ GetProjectedValue() [2/2]

BlobHandle System.Reflection.Metadata.CustomAttribute.GetProjectedValue ( CustomAttributeValueTreatment treatment)
inlineprivate

Definition at line 54 of file CustomAttribute.cs.

55 {
56 BlobHandle.VirtualIndex virtualIndex;
57 bool flag;
58 switch (treatment)
59 {
60 case CustomAttributeValueTreatment.AttributeUsageVersionAttribute:
61 case CustomAttributeValueTreatment.AttributeUsageDeprecatedAttribute:
62 virtualIndex = BlobHandle.VirtualIndex.AttributeUsage_AllowMultiple;
63 flag = true;
64 break;
65 case CustomAttributeValueTreatment.AttributeUsageAllowMultiple:
66 virtualIndex = BlobHandle.VirtualIndex.AttributeUsage_AllowMultiple;
67 flag = false;
68 break;
69 case CustomAttributeValueTreatment.AttributeUsageAllowSingle:
70 virtualIndex = BlobHandle.VirtualIndex.AttributeUsage_AllowSingle;
71 flag = false;
72 break;
73 default:
74 return default(BlobHandle);
75 }
77 BlobReader blobReader = _reader.GetBlobReader(value);
78 if (blobReader.Length != 8)
79 {
80 return value;
81 }
82 if (blobReader.ReadInt16() != 1)
83 {
84 return value;
85 }
86 AttributeTargets attributeTargets = ProjectAttributeTargetValue(blobReader.ReadUInt32());
87 if (flag)
88 {
89 attributeTargets |= AttributeTargets.Constructor | AttributeTargets.Property;
90 }
91 return BlobHandle.FromVirtualIndex(virtualIndex, (ushort)attributeTargets);
92 }
CustomAttributeTableReader CustomAttributeTable
BlobReader GetBlobReader(BlobHandle handle)
static AttributeTargets ProjectAttributeTargetValue(uint rawValue)

References System.Reflection.Metadata.CustomAttribute._reader, System.Reflection.Metadata.MetadataReader.CustomAttributeTable, System.Reflection.Metadata.BlobHandle.FromVirtualIndex(), System.Reflection.Metadata.MetadataReader.GetBlobReader(), System.Reflection.Metadata.Ecma335.CustomAttributeTableReader.GetValue(), System.Reflection.Metadata.BlobReader.Length, System.Reflection.Metadata.CustomAttribute.ProjectAttributeTargetValue(), System.Reflection.Metadata.BlobReader.ReadInt16(), System.Reflection.Metadata.BlobReader.ReadUInt32(), and System.value.