36 internal struct Record : IRecord
39 internal short MappingFlags;
40 internal int MemberForwarded;
41 internal StringHandle ImportName;
42 internal int ImportScope;
44 readonly
int IRecord.FilterKey => MemberForwarded;
46 public readonly
int CompareTo(Record other) => Comparer<int>.Default.Compare(MemberForwarded, other.MemberForwarded);
50 internal const int Index = 0x1C;
54 for (
int i = 0; i < records.Length; i++)
56 records[i].MappingFlags = mr.ReadInt16();
57 records[i].MemberForwarded = mr.ReadMemberForwarded();
58 records[i].ImportName = MetadataTokens.StringHandle(mr.ReadStringIndex());
59 records[i].ImportScope = mr.ReadModuleRef();
63 internal override void Write(ModuleBuilder module)
65 for (
int i = 0; i < rowCount; i++)
66 module.Metadata.AddMethodImport(
67 (MethodDefinitionHandle)MetadataTokens.EntityHandle(records[i].MemberForwarded),
68 (
System.Reflection.MethodImportAttributes)records[i].MappingFlags,
69 records[i].ImportName,
70 (ModuleReferenceHandle)MetadataTokens.EntityHandle(records[i].ImportScope));
73 internal void Fixup(ModuleBuilder moduleBuilder)
75 for (
int i = 0; i < rowCount; i++)
76 moduleBuilder.FixupPseudoToken(
ref records[i].MemberForwarded);