假设我的Facade类有两个子系统类.每个子系统都有不同的事件
FacadeClass是
public class FacadeClass { private SubsystemClass1 _s1; private SubsystemClass2 _s2; public FacadeClass() { _s1 = new SubsystemClass1(); _s2 = new SubsystemClass2(); } }
和SubsystemClass1
public class SubsystemClass1 { public event EventHandler FetchComplete; public void OnFetchComplete(EventArgs e) { if (FetchComplete != null) { FetchComplete(this,e); } } }
然后是SubsystemClass2
public class SubsystemClass2 { public event EventHandler SendComplete; public void OnSendComplete(EventArgs e) { if (SendComplete != null) { SendComplete(this,e); } } }
假设我有另一个使用facade类的类,我想从SubsystemClass1和SubsystemClass2附加事件.问题是如何在没有使用子系统类(如果有的话)的情况下在没有redifine的情况下附加事件?
在外观类中重新设置它的示例
public class FacadeClass { private SubsystemClass1 _s1; private SubsystemClass2 _s2; public FacadeClass() { _s1 = new SubsystemClass1(); _s2 = new SubsystemClass2(); } // Redifine the event public event EventHandler FetchComplete { add { _s1.FetchComplete += value; } remove { _s1.FetchComplete -= value; } } public event EventHandler SendComplete { add { _s2.SendComplete += value; } remove { _s2.SendComplete -= value; } } }
使用子系统类的示例,使它们都是公共的
public class FacadeClass { // Make both class to public public SubsystemClass1 _s1; public SubsystemClass2 _s2; public FacadeClass() { _s1 = new SubsystemClass1(); _s2 = new SubsystemClass2(); } } public class AnotherClass { FacadeClass _fd; public AnotherClass() { _fd = new FacadeClass(); // Little bit ugly _fd._s1.FetchComplete += new EventHandler(_s1_FetchComplete); } void _s1_FetchComplete(object sender,EventArgs e) { // Do Something Here } }
提前致谢,
对Brian说…
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。