(原创文章,转载请注明来源:http://blog.csdn.net/hulihui)
在.NET程序设计时,常常将一些辅助类的事件封装绑定到一个容器类(下面假定为ClassA类)中。于是,经常碰到所谓事件传递或转移问题:辅助类ClassB的事件不直接对客户,而是通过其容器类ClassA发布。下面探讨实现中的两个问题:
- 事件绑定实现:非构造函数与构造函数中实现的区别
- 容器类事件链:事件访问器+=重载时添加事件链表
1、事件绑定实现
1)非构造函数中实现
如果与ClassB的事件委托相同,ClassA可以直接+=绑定ClassB的事件,然后传递发布出去,见如下代码:public class ClassB // 类 ClassB 通过容器类 ClassA 发布事件
{
public event EventHandler ClassBEvent;
public void Fire()
{
if (ClassBEvent != null)
{
ClassBEvent(this, new EventArgs());
}
}
}
public class ClassA // 容器类, 传递发布 ClassB 的事件
{
public event EventH