20
是可以委派从内对象实例的corrent对象的事件处理程序的事件与这样的语法:是否有可能在c#中“链”EventHandlers?
public class MyControl {
public event EventHandler Finish;
private Wizard wizard;
public MyControl(Wizard wizard) {
this.wizard = wizard;
// some other initialization going on here...
// THIS is what I want to do to chain events
this.wizard.Finish += Finish;
}
}
对于上述结构的动机是,我有很多精灵般的UI流和想分开Back,Forward &取消对单个类的处理,以尊重设计中的开放闭合原则和单一责任原则。
添加一个方法OnFinish并进行常规检查总是有可能的,但如果有很多嵌套事件,它会以很多样板代码结束。
谢谢,第二个选项背后的原因足以以这种方式实现系统。并感谢第一个选项,因为我没有意识到有一个语法来重载add。 – plouh 2010-02-24 07:40:19
出于好奇,为什么在测试null和调用Finish之前将Finish分配给处理程序? – dckrooney 2011-06-28 20:39:30
@dcrooney:应该调用处理程序。将编辑。 – 2011-06-28 20:55:42