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

  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010
  • NLthomas21

    NLthomas21

    20 Mayıs 2008
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014