为动态方法设置元数据令牌

问题描述

我正在尝试像这样使用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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...