有人知道查看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; }
}
}
}
答案 0 :(得分:6)
你的问题毫无意义,但你可能正在寻找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;
}
}
答案 1 :(得分:0)
Reflector被RedGate收购,现在已成为商业产品。
免费替代方案是dotPeek:
https://www.jetbrains.com/decompiler/
这是一个非常强大的反编译器,有很多选项,每一点都和Reflector在购买时一样好。我没有用它,因为不能评论你得到的钱。
另一个工具是LINQPad:
在您键入时(它很方便)它会反汇编C#并显示CIL。但是,它不会尝试将其反编译回C#。