有人知道查看 C# 编译器生成的委托代码的工具吗?
我想验证以下内容
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<MyEventArgs> MyEvent;
public event EventHandler<MyEventArgs> MyEvent
{
[MethodImpl(MethodImplOptions.Synchronized)] add
{
this.MyEvent = (EventHandler<MyEventArgs>) Delegate.Combine(this.MyEvent, value);
return;
}
[MethodImpl(MethodImplOptions.Synchronized)] remove
{
this.MyEvent = (EventHandler<MyEventArgs>) Delegate.Remove(this.MyEvent, value);
return;
}
}
Reflector 被 RedGate 收购,现已成为商业产品。
免费的替代方案是 dotPeek:
https://www.jetbrains.com/decompiler/
它是一个非常强大的反编译器,有很多选项,并且与购买时的 Reflector 一样好。从那以后我就没有使用过它,所以无法评论你的钱得到了什么。
另一个工具是 LINQPad:
它会在您键入时反汇编 C#(这很方便),并会向您显示 CIL。但是它不会尝试为您将其反编译回 C#。