示例#1
0
        DmdEcma335MetadataReader(DmdModuleImpl module, dnlib.DotNet.MD.Metadata metadata)
        {
            signatureLock        = new object();
            this.module          = module;
            Metadata             = metadata;
            fieldTypeCache       = new Dictionary <uint, DmdType?>();
            methodSignatureCache = new Dictionary <uint, DmdMethodSignature?>();

            TablesStream.TryReadModuleRow(1, out var row);
            ModuleScopeName = metadata.StringsStream.ReadNoNull(row.Name);
            ModuleVersionId = metadata.GuidStream.Read(row.Mvid) ?? 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);
        }
示例#2
0
 public MetadataFixer(MD.Metadata metadata, void *peFileData)
 {
     md = metadata ?? throw new ArgumentNullException(nameof(metadata));
     this.peFileData = peFileData;
     patchedMetadata = false;
 }