private void ReadMetaDataTableRefs()
{
SetUpTableInfo();
SetThisScope();
// ReadAssemblyRefs
SetElementPosition(MDTable.AssemblyRef,1);
if (tableLengths[(int)MDTable.AssemblyRef] > 0)
AssemblyRef.Read(this,tables[(int)MDTable.AssemblyRef]);
// Read File Table (for ModuleRefs)
//SetElementPosition(MDTable.File,1);
if (tableLengths[(int)MDTable.File] > 0)
FileRef.Read(this,tables[(int)MDTable.File]);
// Read Exported Classes
//SetElementPosition(MDTable.ExportedType,1);
if (tableLengths[(int)MDTable.ExportedType] > 0)
ExternClass.GetClassRefs(this,tables[(int)MDTable.ExportedType]);
// Read ModuleRefs
if (tableLengths[(int)MDTable.ModuleRef] > 0) {
BaseStream.Position = tableStarts[(int)MDTable.ModuleRef];
ModuleRef.Read(this,tables[(int)MDTable.ModuleRef],true);
}
uint[] parIxs = new uint[tableLengths[(int)MDTable.TypeDef]];
BaseStream.Position = tableStarts[(int)MDTable.NestedClass];
MapElem.ReadNestedClassInfo(this,tableLengths[(int)MDTable.NestedClass],parIxs);
BaseStream.Position = tableStarts[(int)MDTable.TypeRef];
// Read ClassRefs
if (tableLengths[(int)MDTable.TypeRef] > 0)
ClassRef.Read(this,tables[(int)MDTable.TypeRef],true);
// Read ClassDefs and fields and methods
ClassDef.GetClassRefs(this,tables[(int)MDTable.TypeDef],(ReferenceScope)thisScope,parIxs);
for (int i=0; i < tableLengths[(int)MDTable.ExportedType]; i++) {
((ClassRef)tables[(int)MDTable.ExportedType][i]).ResolveParent(this,true);
}
}