mono - 无论如何更新IL指令以使用新的局部变量索引?
问题描述
我正在尝试将一种方法注入另一种方法。问题是局部变量索引。例子-
public void Method1()
{
var tes = "anything";
}
public void Method2()
{
var spring = 40;
}
我想将 method1 注入到 method2 中,但问题是它会抛出无效的 IL 代码,因为index 0处的 method1局部变量是string类型,而index 0处的 method2局部变量是int类型。我所做的是获取 method1 methodDefinition并通过 -
var Method1_Instructions= MethodDefinition.Body.Instructions.ToList();// method1 methodDefinition
var Method1_localVariables= Method1_MethodDefinition.Body.Variables
for (var I = 0; I < Method1_localVariables.Count; I++)
{
Method2_MethodDefinition.Body.Variables.Insert(I,
Method1_localVariables[I]);
}
我将方法 1 的局部变量添加到方法 2 变量列表中,并在它之前插入指令。但由于局部变量索引问题,我知道它错误的 IL 代码。那么,如何在不自己编写 IL 代码的情况下修复它?
解决方案
推荐阅读
- php - 使用函数而不是多个 preg_matches 检查数据格式
- javascript - 使用 JS POST 下载 zip 文件
- angular - NgRx:如何模拟存储选择函数以返回不同的值
- c++ - 外部变量声明是否也声明了(对象)实体?
- python - 条形图上的seaborn重叠群图
- angular - Angular *ng用于访问数组的特定值
- python - 我想用所有列的 NA 填充由 datetime 索引的数据框中的缺失行
- java - 根据纹理视图的大小自动调整camera2的大小预览
- java - 在 wicket 应用程序中访问 Maven 依赖项的资源
- excel - 计算 2 行中的重复条目不超过 3 次