我可以使用什么工具或方法来查看像匿名方法或LINQ语句编译的代码?基本上看看幕后发生了什么?
答案 0 :(得分:5)
Reflector是一种很好的方法。
转到“视图/选项/优化”并选择“无”,以便它不会尝试计算出C#最初的内容。
例如,这个小应用的Main
方法:
using System;
class Test
{
static void Main()
{
string other = "hello";
Foo (x => new { Before = other + x, After = x + other });
}
static void Foo<T>(Func<int, T> func) {}
}
被反编译为:
private static void Main()
{
<>c__DisplayClass1 class2;
class2 = new <>c__DisplayClass1();
class2.other = "hello";
Foo(new Func<int, <>f__AnonymousType0<string, string>>(class2.<Main>b__0));
return;
}
然后您会查看<>c__DisplayClass1
和<>f_AnonymousType0
以获取更多详细信息等。
答案 1 :(得分:2)
您可以使用ildasm查看编译器的MSIL输出。
答案 2 :(得分:1)
当我们调用CLR方法时,如果你想进入内部并且在.Net框架中进行什么,还有另外一种方法。
如果您使用的是VS 2008,您甚至可以调试.net框架源代码。为此,您需要安装Microsoft source reference server hotfixes ..
而且Shawn Burke得到了一个很好的帖子(分步指南)来配置这个东西..
试试吧..