这个简单的课程
public class Test<T> { public static void A(Window wa,Window wb) { wa.Closed += (s,e) => wb.Close(); } }
获取编译为this(我使用Reflector进行反编译):
public class Test<T> { [CompilerGenerated] private sealed class <>c__displayClass1 { public Window wb; public void <A>b__0(object s,EventArgs e) { this.wb.Close(); } } public static void A(Window wa,Window wb) { wa.Closed += delegate(object s,EventArgs e) { base.wb.Close(); }; } }
base的意思是什么?如果它从未使用过,为什么会生成<> c__displayClass1?
这是一个Reflector错误吗?
编辑:
实际上,在这种情况下,似乎Reflector优化并不是很好,因此禁用优化反编译代码是有意义的:
public class Test<T> { public test() { base..ctor(); return; } public static void A(Window wa,Window wb) { <>c__displayClass1<T> CS$<>8__locals2; CS$<>8__locals2 = new <>c__displayClass1<T>(); CS$<>8__locals2.wb = wb; wa.Closed += new EventHandler(CS$<>8__locals2.<A>b__0); return; } [CompilerGenerated] private sealed class <>c__displayClass1 { // Fields public Window wb; public <>c__displayClass1() { base..ctor(); return; } public void <A>b__0(object s,EventArgs e) { this.wb.Close(); return; } } }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。