Exemplo n.º 1
0
        DmdEcma335MetadataReader(DmdModuleImpl module, IMetaData metadata)
        {
            signatureLock        = new object();
            this.module          = module;
            Metadata             = metadata;
            fieldTypeCache       = new Dictionary <uint, DmdType>();
            methodSignatureCache = new Dictionary <uint, DmdMethodSignature>();

            var row = TablesStream.ReadModuleRow(1);

            ModuleScopeName = metadata.StringsStream.ReadNoNull(row?.Name ?? 0);
            ModuleVersionId = metadata.GuidStream.Read(row?.Mvid ?? 0) ?? Guid.Empty;

            var ts = TablesStream;

            typeRefList      = new LazyList <DmdTypeRef>(ts.TypeRefTable.Rows, rid => new DmdTypeRefMD(this, rid, null));
            fieldList        = new LazyList <DmdFieldDef, DmdTypeDef>(ts.FieldTable.Rows, CreateResolvedField);
            typeDefList      = new LazyList <DmdTypeDef>(ts.TypeDefTable.Rows, rid => new DmdTypeDefMD(this, rid, null));
            methodList       = new LazyList <DmdMethodBase, DmdTypeDef>(ts.MethodTable.Rows, CreateResolvedMethod);
            memberRefList    = new LazyList2 <DmdMemberInfo, IList <DmdType>, IList <DmdType> >(ts.MemberRefTable.Rows, CreateResolvedMemberRef);
            eventList        = new LazyList <DmdEventDef, DmdTypeDef>(ts.EventTable.Rows, CreateResolvedEvent);
            propertyList     = new LazyList <DmdPropertyDef, DmdTypeDef>(ts.PropertyTable.Rows, CreateResolvedProperty);
            typeSpecList     = new LazyList2 <DmdType, IList <DmdType>, IList <DmdType> >(ts.TypeSpecTable.Rows, ReadTypeSpec);
            exportedTypeList = new LazyList <DmdTypeRef>(ts.ExportedTypeTable.Rows, rid => new DmdExportedTypeMD(this, rid, null));

            globalTypeIfThereAreNoTypes = new DmdNullGlobalType(module, null);
        }
Exemplo n.º 2
0
        static DmdEcma335MetadataReader Create(DmdModuleImpl module, IPEImage peImage)
        {
            var metadata = MetadataFactory.CreateMetadata(peImage);

            return(new DmdEcma335MetadataReader(module, metadata));
        }
Exemplo n.º 3
0
 public static DmdEcma335MetadataReader Create(DmdModuleImpl module, string filename, bool isFileLayout) =>
 Create(module, File.ReadAllBytes(filename), isFileLayout);
Exemplo n.º 4
0
        public static DmdEcma335MetadataReader Create(DmdModuleImpl module, byte[] bytes, bool isFileLayout)
        {
            var peImage = new PEImage(bytes, isFileLayout ? ImageLayout.File : ImageLayout.Memory, true);

            return(Create(module, peImage));
        }
Exemplo n.º 5
0
        public static DmdEcma335MetadataReader Create(DmdModuleImpl module, IntPtr address, uint size, bool isFileLayout)
        {
            var peImage = new PEImage(address, size, isFileLayout ? ImageLayout.File : ImageLayout.Memory, true);

            return(Create(module, peImage));
        }
Exemplo n.º 6
0
 public TypeDefResolver(DmdModuleImpl module, bool ignoreCase)
 {
     this.module     = module ?? throw new ArgumentNullException(nameof(module));
     this.ignoreCase = ignoreCase;
 }