C#-Reflection.Emit:返回对局部变量的引用

问题描述

我想制作一个Dynamicmethod,其行为例如如下:

AnyClass myClass = new AnyClass();
Func<AnyClass> myFunc = () => myClass;

我知道,当我想使用int而不是AnyClass时,每次数字12时我都必须使用以下代码片段返回:

// Define method
Dynamicmethod method = new Dynamicmethod(
    "Name",typeof(int),new Type[] { });

// Define method body
ILGenerator il = method.GetILGenerator();
il.Emit(OpCodes.Ldc_I4,12);
il.Emit(OpCodes.Ret);

但是现在我问自己如何使用非内置类做到这一点。

编辑:

最后,我想在调用Dynamicmethod时从局部变量获取引用。查看以下代码片段,以更好地了解我要归档的内容在这里,我想要一个函子,该函子在每次调用时都返回我传递给创建函子的函数的变量。

Func<AnyClass> getmethodWithAFunc(AnyClass myClass) {
   Func<AnyClass> myFunc = () => myClass;
   return myFunc;
}

生成代码段的IL代码可以在SharpLab上找到。不幸的是,我们必须提供一个上下文,在其中可以保存要在Dynamicmethod中返回的数据。最后,我建议使用静态缓存,并在返回值时使用转换和拆箱。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)