代码之家  ›  专栏  ›  技术社区  ›  joemoe

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

  •  1
  • joemoe  · 技术社区  · 16 年前

    我有一个类,它有一个成员对象(类变量)。此对象有一些事件。我想直接在我的课上公开这些事件。最好的方法是什么?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Josh    16 年前

    如果要直接公开事件(不定义将转发给订阅服务器的新处理程序),可以执行以下操作:

    class MyClass {
    
        private readonly OtherClass other = new OtherClass();
    
        public event EventHandler Click {
            add { other.Click += value; }
            remove { other.Click -= value; }
        }
    
    }
    

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

    推荐文章