Tag: anonymous inner class

C#中的匿名内部类

我正在编写C#Wicket实现,以加深我对C#和Wicket的理解。 我们遇到的一个问题是Wicket大量使用匿名内部类,而C#没有匿名内部类。 因此,例如,在Wicket中,您可以像这样定义一个链接: Link link = new Link(“id”) { @Override void onClick() { setResponsePage(…); } }; 由于Link是一个抽象类,它强制实现者实现onClick方法。 但是,在C#中,由于没有匿名内部类,因此无法执行此操作。 作为替代方案,您可以使用以下事件: var link = new Link(“id”); link.Click += (sender, eventArgs) => setResponsePage(…); 当然,这有一些缺点。 首先,可以有多个Click处理程序,这可能不太酷。 它也不会强制实现者添加Click处理程序。 另一个选择可能是只有一个这样的闭包属性: var link = new Link(“id”); link.Click = () => setResponsePage(…); 这解决了具有许多处理程序的问题,但仍然没有强制实现者添加处理程序。 所以,我的问题是,你如何在惯用的C#中模仿这样的东西?