36 internal struct Record
40 internal int TypeDefId;
42 internal StringHandle TypeNamespace;
43 internal int Implementation;
47 internal const int Index = 0x27;
51 for (
int i = 0; i < records.Length; i++)
53 records[i].Flags = mr.ReadInt32();
54 records[i].TypeDefId = mr.ReadInt32();
55 records[i].TypeName = MetadataTokens.StringHandle(mr.ReadStringIndex());
56 records[i].TypeNamespace = MetadataTokens.StringHandle(mr.ReadStringIndex());
57 records[i].Implementation = mr.ReadImplementation();
61 internal override void Write(ModuleBuilder module)
65 var h = module.Metadata.AddExportedType(
66 (
System.Reflection.TypeAttributes)records[i].Flags,
67 records[i].TypeNamespace,
69 MetadataTokens.EntityHandle(records[i].Implementation),
70 records[i].TypeDefId);
72 Debug.Assert(h == MetadataTokens.ExportedTypeHandle(i + 1));
76 internal int FindOrAddRecord(Record rec)
80 if (records[i].Implementation == rec.Implementation &&
81 records[i].TypeName == rec.TypeName &&
82 records[i].TypeNamespace == rec.TypeNamespace)
86 return AddRecord(rec);
89 internal void Fixup(ModuleBuilder moduleBuilder)
92 moduleBuilder.FixupPseudoToken(
ref records[i].Implementation);