在最新版本的.NET Framework 4.5版中,MethodBuilder类有一个名为SetMethodBody
的方法,我相信这正是我所看到的,作为使用ILGenerator的替代方法(这是讨厌和有限的奇怪方式)。该文档可以找到here,虽然从.NET 4.5还没有出来,但没有完整的文档。我可以提供除了两个以外的所有参数,但其余的我需要帮助。.NET 4.5 MethodBuilder.SetMethodBody
我不明白的第一个是byte[] localSignature
,第三个参数。 MSDN指出它是“一个包含序列化局部变量结构的字节数组,如果该方法没有局部变量,则指定null”。麻烦的是,就是这么说的,我找不到“序列化局部变量签名”的格式。我试过看ECMA-335规范,但是我发现的是如何在未组装的CIL中指定局部变量。如果有人能帮我弄清楚,那将非常感激。
另外,最后一个参数是IEnumerable<int> tokenFixups
,它是“代表偏移量的值的集合,其中每个值都指定可以修改的令牌的开始。如果方法没有令牌被修改“。我怀疑我不需要使用这些,但我想知道他们是什么。
感谢, 布兰登
您需要SignatureHelper类。 Fixup仅适用于将本机代码翻译为IL的编译器,如C++/CLI。 – 2012-03-10 13:02:11
@Hans Passant:谢谢你的回答! :) – aboveyou00 2012-03-20 17:51:10