Gemäß den Microsoft-Richtlinien zur Benennung von Ereignissen ist der sender
Parameter in einem C # -Ereignishandler " immer vom Typ Objekt, auch wenn es möglich ist, einen spezifischeren Typ zu verwenden".
Dies führt zu vielen Ereignisbehandlungscodes wie:
RepeaterItem item = sender as RepeaterItem;
if (item != null) { /* Do some stuff */ }
Warum rät die Konvention davon ab, einen Event-Handler mit einem spezifischeren Typ zu deklarieren?
MyType
{
public event MyEventHander MyEvent;
}
...
delegate void MyEventHander(MyType sender, MyEventArgs e);
Vermisse ich eine Gotcha?
Für die Nachwelt: Ich bin mit der allgemeinen Stimmung in den Antworten , dass die Konvention ist zu genutztes Objekt (und Daten über das passieren EventArgs
) , selbst wenn es möglich ist , eine bestimmte Art zu verwenden, und in der realen Welt der Programmierung es ist wichtig , zu folgen Das Treffen.
Bearbeiten: Köder für die Suche: RSPEC-3906-Regel "Event-Handler sollten die richtige Signatur haben"