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.

questionAnswers(12)

yourAnswerToTheQuestion