コード例 #1
0
        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];
        }
コード例 #2
0
 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];
 }