c# – 如何通知事件订阅者

在我上次的面试中,我被问到如何实现一个暴露事件的类,并在订阅该事件时通知新事件订阅者.

换句话说,类会公开一个事件,以便在更新数据源时通知订阅者;许多其他课程可以在任何时间订阅该活动.当一个类订阅该事件时,必须通知它以获取存储在数据源中的最新版本的数据,但是不能通知其他类(它们已经是最新的).

他们建议我覆盖addHandler方法,但是如何只通知新订阅者呢?

是否有.net的一个功能我不知道或者我是否需要在添加到处理程序(某种观察者模式)时在订阅者类中定义一个方法?

编辑:我想我不清楚,所以我会尝试以另一种方式解释它.
假设我有一个观察者模式.当一个新的观察者订阅主题时,它会立即通过主题更新最新的数据源值.后来,当数据源中的某些内容发生变化时,主题将像往常一样通知所有注册的观察者.我被问到如何使用.net事件进行此操作

最佳答案
你的术语是毛茸茸的 – 你的意思是“它必须被激活”?你的意思是必须在订阅点调用一次事件处理程序吗?如果是这样,那听起来像是:

private EventHandler foo;

public event EventHandler Foo 
{
    add
    {
        if (value != null)
        {
            value(this, EventArgs.Empty);
        }
        foo += value;
    }

    remove
    {
        foo -= value;
    }
}

虽然这是一个非常奇怪的设计.

如果那不是你想要的,请尽量澄清.

有关更多信息,请参阅我的article on events and delegates.

转载注明原文:c# – 如何通知事件订阅者 - 代码日志