internal DataConstant GetDataConstant(uint rva, Type constType) { BaseStream.Seek(GetOffset(rva),SeekOrigin.Begin); if (constType is PrimitiveType) { switch (constType.GetTypeIndex()) { case ((int)ElementType.I1) : return new IntConst(ReadByte()); case ((int)ElementType.I2) : return new IntConst(ReadInt16()); case ((int)ElementType.I4) : return new IntConst(ReadInt32()); case ((int)ElementType.I8) : return new IntConst(ReadInt64()); case ((int)ElementType.R4) : return new FloatConst(ReadSingle()); case ((int)ElementType.R8) : return new DoubleConst(ReadDouble()); case ((int)ElementType.String) : return new StringConst(ReadString()); } } else if (constType is ManagedPointer) { uint dataRVA = ReadUInt32(); Type baseType = ((ManagedPointer)constType).GetBaseType(); return new AddressConstant(GetDataConstant(dataRVA,baseType)); } // need to do repeated constant?? return null; }