无论如何更新 IL 指令以使用新的局部变量索引?

问题描述

我正在尝试将一种方法注入到另一种方法中。 问题是局部变量索引。 示例-

 public void Method1()
    {
        var tes = "anything";

    }

    public void Method2()
    {
        var spring = 40;

    }

我想将 method1 注入 method2 但问题是它抛出了无效的 IL 代码,因为对于 method1 local variableindex 0string类型strong> 并且对于 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]); 

                    }

我将method1的局部变量添加到method2变量列表中,并在其前插入指令。 但由于局部变量索引问题,我知道它的错误 IL 代码。 那么,如何在不自己编写 IL 代码的情况下修复它?

解决方法

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

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

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