将事件连接到对象的最佳方法?

时间:2009-11-28 23:11:38

标签: c# .net design-patterns events

我有一个有成员对象(类变量)的类。这个对象有一些事件。我想直接在课堂上公开这些事件。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

如果您想直接公开事件(无需定义要转发给订阅者的新处理程序),您可以这样做:

class MyClass {

    private readonly OtherClass other = new OtherClass();

    public event EventHandler Click {
        add { other.Click += value; }
        remove { other.Click -= value; }
    }

}

此方法的优点是您不需要处理来自OtherClass的事件并将它们转发为您自己的事件。缺点(以及我将“其他”字段声明为readonly的原因)是任何连接到MyClass的Click事件的人都是间接地连接到OtherClass的Click事件。因此,您不希望仅更改另一个实例,因为不会调用已经处理该事件的订阅者。