uygulamanın en iyi yolu nedir? Aşağıdaki senaryo var. İstemci kodu, yalnızca Foo örneklerine doğrudan değil, FooHandler'a erişebilir.Zincirleme olayları C#
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);
}
}
Sonra istemciler foos yüklenmesi bildirimlerini almak için FooHandler sınıfının OneFooLoaded olayını kullanmak. Bu 'etkinlik zinciri' yapmak için doğru olan şey mi? Alternatif var mı? Bundan hoşlanmıyorum (yanlış hissettiriyor, nedenini tam olarak ifade edemiyorum), ama eğer işleyicinin erişim noktası olmasını istersem, pek çok alternatifim var gibi görünmüyor.
Şu anda üzerinde çalışıyorum projeye başlamadan önce bunu görmek isterdim, bu benim için işleri çok daha kolay hale getirdi (ve birim testine çok daha kolay). – ForbesLindesay