SORU
16 EYLÜL 2009, ÇARŞAMBA


olay Eylem<> vs event EventHandler<>

Herhangi bir event Action<> event EventHandler<> ilan arasında farklı.

Aslında nesnenin ne olduğunun önemi yok varsayarak bir olay ortaya.

örneğin:

public event Action<bool, int, Blah> DiagnosticsEvent;

vs

public event EventHandler<DiagnosticsArgs> DiagnosticsEvent;

class DiagnosticsArgs : EventArgs
{
    public DiagnosticsArgs(bool b, int i, Blah bl)
    {...}
    ...
}

kullanımı her iki durumda da hemen hemen aynı olacaktır

obj.DiagnosticsEvent  = HandleDiagnosticsEvent;

event EventHandler<> desen hoşuma gitmeyen birkaç şey vardır:

  • Fazladan türü bildirimi türetilmiştir EventArgs
  • Nesne kaynak geçirilmesi zorunlu – genellikle kimsenin umurunda değil

Daha fazla kod herhangi bir avantajı olmadan korumak için daha fazla kod anlamına gelir.

Sonuç olarak, event Action<> tercih ederim

Eğer Eylem<^ çok fazla türü argümanlar varsa ancak, sadece . ekstra sınıf gerekli olacaktır. sonra bir

CEVAP
16 EYLÜL 2009, ÇARŞAMBA


Temel fark ise Action<> kullanımı olay bir olumsuzluk sayarım sistemde hemen her olay, bir tasarım deseni takip edecek değil.

Hakim tasarım deseni (aynılık gücü dışında) ile bir baş olay imzası değiştirmeden yeni özellikleri ile EventArgs nesne genişletebilirsiniz. Bu hala varsa Action<SomeClassWithProperties>, kullandıysanız mümkün olabilir ama bu durumda normal bir yaklaşım kullanarak hiç bir anlamı yok.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C#

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • VJ VIMANA

    VJ VIMANA

    3 Mayıs 2007