her zamaneğer daha özel bir tür kullanmak mümkün olup olmadığını bile nesn" /> her zamaneğer daha özel bir tür kullanmak mümkün olup olmadığını bile nesn" />
SORU
17 EYLÜL 2009, PERŞEMBE


Bir C# neden "Gönderen" parametre bir nesne olması gerekir?olay işleyicisi

http://msdn.microsoft.com/en-us/library/h0eyck3s(VS.71).aspx C Gönderen parametresi göre#". olay işleyicisi ^em>her zamaneğer daha özel bir tür kullanmak mümkün olup olmadığını bile nesne türü."

Bu olay işleme kodu bir sürü yol açar: - gibi

RepeaterItem item = sender as RepeaterItem
if (item != null) { /* Do some stuff */ }

Şimdi, benim durumumda, ben çalışıyorum özel C# olay yerine dahili ASP.NET olaylar, hayır ASP.NET bu olaya şimdiye kadar), bu yüzden ben kesinlikle etme hakkında yanlışlıkla gerçekleştiren bir operasyon, örnek bir Denetim Başlığı.

Neden Kongre daha özel bir türü olan bir olay işleyicisi ilan yapmamanı tavsiye ediyor mu? " dedi. :-

MyType
{
  public event MyEventHander MyEvent;
}

...

delegate void MyEventHander ( MyType sender, MyEventArgs e );

Alınması gereken bir nokta eksik muyum?

Edit

Sadece boyutu için EventHandler< genişletmek olabilir, bu olur;TArgs> ile çalışıyor:-

public class EventArgs<TContent> : EventArgs
{
  public TContent Content { get; set; }
}

public delegate void EventHandler<TContent>
  ( object sender, EventArgs<TContent> e );

Bu kokuşmuş görünüyor mu?

2 düzenleyin

Ben bir cevap kabul etmeden önce, cevaplar, genel duyguları ile katılıyorum kuşaklar için Kongre söylemeliyimkullanmak için daha belirli bir tür kullanmak mümkün olsa bile, ve gerçek dünya programlama içinde nesneönemli kurallarına uyar.

Cevaplar için teşekkürler!

CEVAP
17 EYLÜL 2009, PERŞEMBE


Evet, bir kural yerine bir desen var. Bir bileşen öne eğer normal tip olayı büyütmek bile orijinal Gönderen tutmaktan başka bir olay, olabilir.

Biraz garip olduğunu kabul ediyorum, ama muhtemelen sadece benzerlik aşkına sözleşmesi yapışmasını değer. (Diğer geliştiriciler için aşinalık.) Asla EventArgs ben de kendi hakkında bilgi veriyor verilen) özellikle düşkün oldum ama bu başka bir konu. (En azından şimdi EventHandler<TEventArgs> var ise de sadece dağıtılmasını tek bir değer gerektiren ortak durum için EventArgs<TContent> olsaydı yardımcı olsa da.)

EDİT: temsilci daha genel amaçlı yapıyor, tabii ki tek bir temsilci türü birden çok olay arasında yeniden kullanılabilir. Özellikle iyi bir neden olarak alabilir miyim emin değilim - özellikle jenerik ışığında - ama sanırımbir şey...

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • Commander Chalkboard

    Commander Ch

    20 Ocak 2014
  • Willie D.

    Willie D.

    16 Aralık 2006