我目前正在研究从 methbases 到使用 ILSpy 的 C# 表达式树的编译器(转译器?)。我遇到的一般问题是将 System.Reflection.MethodBases 链接到 ILSpy 输出的 NRefactory AST 中的正确方法声明。
我很清楚 ILSpy 能够为整个程序集提供 AST,例如:
AssemblyDefinition pAssembly = AssemblyDefinition.ReadAssembly(filename, parameters);
AstBuilder pDecompiler = new AstBuilder(new DecompilerContext(pAssembly.MainModule));
pDecompiler.AddAssembly(pAssembly);
pDecompiler.RunTransformations();
ast = pDecompiler.SyntaxTree;
但是,是否可以为一小段 IL 调用 ILSpy,例如您可以通过调用获得:
m.GetMethodBody().GetILAsByteArray()
这将使解决方法库配对问题变得非常容易,我目前有一个非常可怕的解决方案。