public MSILAssembler(MethodBody methodBody) { this.MethodBody = methodBody; _disassembler = new MSILDisassembler(methodBody); _image = methodBody.Method._netheader._assembly.Image; _offsetConverter = new OffsetConverter(Section.GetSectionByRva(methodBody.Method._netheader._assembly, methodBody.Method.RVA)); _bodyOffset = _offsetConverter.RvaToFileOffset(methodBody.Method.RVA) + methodBody.HeaderSize; _tokenResolver = methodBody.Method._netheader.TokenResolver; }
internal NETMethodReader(PeImage peImage, MethodBody methodbody) { tokenResolver = new MetaDataTokenResolver(peImage.ParentAssembly._netHeader); this.peImage = peImage; this.rva = methodbody.Method.RVA; this.methodbody = methodbody; peImage.SetOffset(Offset.FromRva(rva, peImage.ParentAssembly).FileOffset); rawoffset = (uint)peImage.Stream.Position; signature = peImage.Reader.ReadByte(); }
public static MethodBody FromMethod(MethodDefinition methodDef) { MethodBody body = new MethodBody(); body.Method = methodDef; body._reader = new NETMethodReader(methodDef._netheader._assembly._peImage, body); if (body.IsFat) body._reader.ReadFatMethod(); return body; }
public override void LoadCache() { base.LoadCache(); _paramRange = MemberRange.CreateRange<ParameterDefinition>(this, 5, NETHeader.TablesHeap.GetTable(MetaDataTableType.Param, false)); _semantics = Semantics; _body = Body; _genericParameters = GenericParameters; }
public override void ClearCache() { base.ClearCache(); _paramRange = null; _semantics = null; _body = null; _genericParameters = new GenericParameter[0]; _hasLoadedGenericParameters = false; }