【问题标题】:Best way to wire events to an object?将事件连接到对象的最佳方法?
【发布时间】:2009-11-28 23:11:38
【问题描述】:

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

【问题讨论】:

    标签: c# .net design-patterns events


    【解决方案1】:

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

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

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

    【讨论】:

    • 特别注意,事件处理程序将接收对内部对象的引用作为sender 参数。如果您有意不以其他方式暴露内部对象,则它可能是封装破坏者。
    猜你喜欢
    • 2013-07-23
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多