在我上次的面试中,我被问到如何实现一个暴露事件的类,并在订阅该事件时通知新事件订阅者.
换句话说,类会公开一个事件,以便在更新数据源时通知订阅者; 许多其他课程可以在任何时间订阅该活动.当一个类订阅该事件时,必须通知它以获取存储在数据源中的最新版本的数据,但是不能通知其他类(它们已经是最新的).
他们建议我覆盖addHandler方法,但是如何只通知新订阅者呢?
是否有.net的一个功能我不知道或者我是否需要在添加到处理程序(某种观察者模式)时在订阅者类中定义一个方法?
编辑:我想我不清楚,所以我会尝试用另一种方式来解释它.假设我有一个观察者模式.当一个新的观察者订阅主题时,它会立即通过主题更新最新的数据源值.后来,当数据源中的某些内容发生变化时,主题将像往常一样通知所有注册的观察者.我被问到如何使用.net事件进行此操作
Jon*_*eet 15
你的术语是毛茸茸的 - 你的意思是"它必须被激活"?你的意思是必须在订阅点调用一次事件处理程序吗?如果是这样,那听起来像是:
private EventHandler foo;
public event EventHandler Foo
{
add
{
if (value != null)
{
value(this, EventArgs.Empty);
}
foo += value;
}
remove
{
foo -= value;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个非常奇怪的设计.
如果那不是你想要的,请尽量澄清.
有关更多信息,请参阅我关于事件和代理的文章.
| 归档时间: |
|
| 查看次数: |
2126 次 |
| 最近记录: |