在最新版本的.NET框架4.5中,MethodBuilder类有一个名为SetMethodBody的方法,我认为这正是我正在寻找的替代ILGenerator(它很烦人并且在奇怪的方式上受限)的方法。文档可以在此处找到,尽管.NET 4.5还没有发布,因此它没有完全记录。我可以提供除两个参数外的所有参数,但其余的我需要帮助。
我不理解的第一个是第三个参数byte[] localSignature。MSDN指出,它是“包含序列化本地变量结构的字节数组。如果方法没有局部变量,则指定null。”问题是,这就是它所说的一切,我无法找到“序列化本地变量签名”的格式。我已经尝试在ECMA-335规范中查找,但我只找到了如何在未组装的CIL中指定局部变量。如果有人能帮我弄清楚这一点,我将不胜感激。
此外,最后一个参数是
我不理解的第一个是第三个参数byte[] localSignature。MSDN指出,它是“包含序列化本地变量结构的字节数组。如果方法没有局部变量,则指定null。”问题是,这就是它所说的一切,我无法找到“序列化本地变量签名”的格式。我已经尝试在ECMA-335规范中查找,但我只找到了如何在未组装的CIL中指定局部变量。如果有人能帮我弄清楚这一点,我将不胜感激。
此外,最后一个参数是
IEnumerable<int> tokenFixups
,它表示“il 中代表可以修改的标记开头的偏移量值集合。如果该方法没有需要修改的标记,则指定为 null。”我猜我不需要使用它们,但我还是想知道它们是什么。谢谢,Brandon