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); }
public MetadataFixer(MD.Metadata metadata, void *peFileData) { md = metadata ?? throw new ArgumentNullException(nameof(metadata)); this.peFileData = peFileData; patchedMetadata = false; }