问题描述
我正在尝试像这样使用ILGenerator构建动态方法
Type[] args = { typeof(int) };
DynamicMethod start = new DynamicMethod("test",null,args,typeof(Test).Module);
var il = start.GetILGenerator();
il.Emit(OpCodes.Ldstr,"test");
//..more opcodes..
var delegate = start.CreateDelegate(typeof(Action<int>));
这行得通,或者至少不会引发异常。问题是我使用的库(Harmony)尝试从生成的MethodInfo访问 MemberInfo.MetadataToken ,该方法抛出 System.InvalidOperationException 。在docs中,有一种方法可以使用
DynamicILInfo.GetTokenFor(DynamicMethod)
,但没有说明如何实际设置令牌。 是否有其他/合适的方法来设置所需的MetadataToken?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)