Example #1
0
        internal MetadataImage(MetadataHeader header)
        {
            if (header == null)
            {
                throw new ArgumentNullException("header");
            }
            Header = header;
            var tableStream = header.GetStream <TableStream>();

            var table = tableStream.GetTable(MetadataTokenType.Assembly);

            MetadataRow assemblyRow;

            if (table.TryGetRow(0, out assemblyRow))
            {
                Assembly = (AssemblyDefinition)table.GetMemberFromRow(this, assemblyRow);
            }
            else
            {
                Assembly = new AssemblyDefinition(null, new Version());
            }

            TypeSystem       = new TypeSystem(this, Assembly.Name == "mscorlib");
            MetadataResolver = new DefaultMetadataResolver(new DefaultNetAssemblyResolver());
        }
Example #2
0
        internal MetadataImage(MetadataHeader header)
        {
            Header = header ?? throw new ArgumentNullException(nameof(header));
            var tableStream = header.GetStream <TableStream>();

            var table = tableStream.GetTable(MetadataTokenType.Assembly);

            if (table.TryGetRow(0, out var assemblyRow))
            {
                Assembly = (AssemblyDefinition)table.GetMemberFromRow(this, assemblyRow);
            }
            else
            {
                Assembly = new AssemblyDefinition(null, new Version());
            }

            TypeSystem       = new TypeSystem(this, Assembly.Name == "mscorlib");
            MetadataResolver = new DefaultMetadataResolver(new DefaultNetAssemblyResolver());

            _entrypoint = new LazyValue <MethodDefinition>(() =>
                                                           TryResolveMember(new MetadataToken(header.NetDirectory.EntryPointToken), out var member)
                    ? member as MethodDefinition
                    : null);
        }