public CliAbstractAssemblyReferences(CliAssembly assembly) { var referenceTables = assembly.ObtainAssemblyRefTables().ToArray(); List <ICliMetadataAssemblyRefTableRow> referenceSources = new List <ICliMetadataAssemblyRefTableRow>(); HashSet <IAssemblyUniqueIdentifier> distinctIdentifiers = new HashSet <IAssemblyUniqueIdentifier>(); foreach (var table in referenceTables) { var copy = table.ToArray(); for (int copyIndex = 0; copyIndex < copy.Length; copyIndex++) { var current = copy[copyIndex]; if (distinctIdentifiers.Add(CliCommon.GetAssemblyUniqueIdentifier(current).Item2)) { referenceSources.Add(current); } } } this.referenceSources = referenceSources.ToArray(); this.identifiers = new ArrayReadOnlyCollection <IAssemblyUniqueIdentifier>(distinctIdentifiers.ToArray()); int mscorLib = -1; for (int i = 0; i < identifiers.Count; i++) { if (identifiers[i].Name == "mscorlib") { mscorLib = i; break; } } this.assembly = assembly; this.references = new IAssembly[this.identifiers.Count]; }
public CliAssemblyReferences(CliAssembly owner) { this.owner = owner; this.referenceTables = owner.ObtainAssemblyRefTables().ToArray(); this.vData = new ICliAssembly[this.Count]; this.kData = new ICliMetadataAssemblyRefTableRow[this.Count]; this.vCheck = new bool[this.Count]; }