Dlaczego w programie obsługi zdarzeń C # parametr „nadawca” musi być obiektem?
WedługWytyczne dotyczące nazewnictwa zdarzeń Microsoft, thesender
parametr w procedurze obsługi zdarzeń C # ”zawsze obiektu typu, nawet jeśli możliwe jest użycie bardziej specyficznego typu ”.
Prowadzi to do wielu kodów obsługi zdarzeń, takich jak:
RepeaterItem item = sender as RepeaterItem;
if (item != null) { /* Do some stuff */ }
Dlaczego konwencja odradza deklarowanie obsługi zdarzeń o bardziej specyficznym typie?
MyType
{
public event MyEventHander MyEvent;
}
...
delegate void MyEventHander(MyType sender, MyEventArgs e);
Czy brakuje mi chusty?
Dla potomności: Zgadzam się z ogólnym sentymentem w odpowiedziach, które zawiera konwencjajest używać obiektu (i przekazywać dane przezEventArgs
) nawet wtedy, gdy możliwe jest użycie bardziej specyficznego typu i programowanie go w świecie rzeczywistymjest ważne, aby przestrzegać konwencji.