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

  • funbro1

    funbro1

    11 Aralık 2007
  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010
  • The Brister

    The Brister

    10 ŞUBAT 2008