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); }
static DmdEcma335MetadataReader Create(DmdModuleImpl module, IPEImage peImage) { var metadata = MetadataFactory.CreateMetadata(peImage); return(new DmdEcma335MetadataReader(module, metadata)); }
public static DmdEcma335MetadataReader Create(DmdModuleImpl module, string filename, bool isFileLayout) => Create(module, File.ReadAllBytes(filename), isFileLayout);
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)); }
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)); }
public TypeDefResolver(DmdModuleImpl module, bool ignoreCase) { this.module = module ?? throw new ArgumentNullException(nameof(module)); this.ignoreCase = ignoreCase; }