C# 反射。发出不安全代码
我正在用F#中的反射发射进行一些黑客攻击。我正在尝试做类似于C代码的事情: 该行尤其是definefield行。在F#中,我能得到的最接近的是C# 反射。发出不安全代码,c#,.net,f#,reflection.emit,C#,.net,F#,Reflection.emit,我正在用F#中的反射发射进行一些黑客攻击。我正在尝试做类似于C代码的事情: 该行尤其是definefield行。在F#中,我能得到的最接近的是 设f=t.DefineField(“foo”,(typeof),FieldAttributes.Public) 但是,编译后的字段最终被编译为IntPtr类型而不是int*(注意,对于nativeint或任何其他类型,它也是IntPtr) 此外,我希望能够使用我通过编程定义的结构,并在另一个结构中使用Foo*,但显然,在这种情况下,我不能使用typeo
设f=t.DefineField(“foo”,(typeof),FieldAttributes.Public)
但是,编译后的字段最终被编译为IntPtr类型而不是int*(注意,对于nativeint或任何其他类型,它也是IntPtr)
此外,我希望能够使用我通过编程定义的结构,并在另一个结构中使用Foo*,但显然,在这种情况下,我不能使用typeof(在C#或F#中)。有没有办法从Type/TypeBuilder中将字段定义为Foo*
在任何人指出这一切都可能是疯狂的(我也同意),对于我自己来说,这是一个有趣的项目,来弄清楚我能生成C不允许的代码有多疯狂:)我相信ilsigptr
是C的int*
的F对应物
另见:
- ,死链接,请参阅
- ,死链接,请参阅
var ass = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("Test"), AssemblyBuilderAccess.RunAndSave);
var mb = ass.DefineDynamicModule("Test", "Test.dll", false);
var t = mb.DefineType("Foo", TypeAttributes.Public, typeof(ValueType));
t.DefineField("foo", typeof(int*), FieldAttributes.Public);
t.CreateType();
ass.Save("Test.dll");