【发布时间】:2016-05-11 04:55:38
【问题描述】:
我创建了一个动态方法,即:
class MyClass
{
private void object _o = <whatever>;
void CreateDynamicMethod()
{
DynamicMethod dm = new DynamicMethod("Test", ...);
// emit various IL
// need to push _o onto stack here
}
}
第二条评论,我想将 _o current 的值压入堆栈。我不想推送 _o 的引用,因为它会随着我构建动态方法而改变。
假设 _o = 5,我想推入 5,如果 _o 包含一个列表,我想推那个,如果它包含一个字符串,我想推这个字符串。
动态方法(Test)是静态方法,它显然不会有MyClass的this指针来获取字段。我什至不能把它放在一个静态变量中,因为它将在 Test() 执行期间访问,而不是在我构建方法时访问。
即使我有 this 指针,_o 在 Test() 执行时也不会有正确的值。
有什么建议吗?
【问题讨论】:
标签: c# .net reflection compiler-construction emit