微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决无论如何更新 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 举报,一经查实,本站将立刻删除。