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
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...
Neden anahtar kelime "son" J...
Gerçekten PHP? "Tartışma 1 my_fun...
"Öğeleri koleksiyonu İtemsSource ...
AngularJS: ng-click "yararlı"...
Neden olayları tanımlarken "olay&...