工具查看编译器生成的代码

有没有人知道查看C#编译器生成的委托代码的工具?

我想validation以下内容

class X { public event D Ev; } 

编译为:

 class X { private D __Ev; // field to hold the delegate public event D Ev { add { lock(this) { __Ev = __Ev + value; } } remove { lock(this) { __Ev = __Ev – value; } } } } 

你的问题毫无意义,但你可能正在寻找Reflector 。

编辑 :现在,你的问题确实有意义。 你还在寻找Reflector。
但是,您需要在选项中将优化设置为无。

它揭示了,

 private EventHandler MyEvent; public event EventHandler MyEvent { [MethodImpl(MethodImplOptions.Synchronized)] add { this.MyEvent = (EventHandler) Delegate.Combine(this.MyEvent, value); return; } [MethodImpl(MethodImplOptions.Synchronized)] remove { this.MyEvent = (EventHandler) Delegate.Remove(this.MyEvent, value); return; } } 

Reflector被RedGate收购,现在是商业产品。

dotPeek是一个免费的替代品:

https://www.jetbrains.com/decompiler/

它是一个非常强大的反编译器,有很多选项,每一点都和Reflector在购买时一样好。 我没有用它,因为不能评论你得到的钱。


另一个工具是LINQPad:

http://www.linqpad.net/

它会在您输入时解析C#(这很方便),并会显示CIL。 但是它不会尝试将它反编译回C#。