public delegate void FooLoaded(object sender, EventArgs e);
class Foo {
public event FooLoaded loaded;
/* ... some code ... */
public void Load() { load_asynchronously(); }
public void callMeWhenLoadingIsDone() { loaded(this,EventArgs.Empty); }
}
class FooHandler {
public event FooLoaded OneFooLoaded;
/* ... some code ... */
public void LoadAllFoos() {
foreach (Foo f in FooList) {
f.loaded += new FooLoaded(foo_loaded);
f.Load();
}
}
void foo_loaded(object sender, EventArgs e) {
OneFooLoaded(this, e);
}
}
然后客户端将使用FooHandler类的OneFooLoaded事件来获取foos的加载通知。这种“事件链接”是正确的做法吗?有没有其他选择?我不喜欢这种方式(感觉不对,但我无法准确地表达为什么),但如果我想让处理程序成为访问点,似乎没有太多选择。