De acuerdo con Microsoft event naming guidelines, el parámetro sender
en un controlador de eventos C# "es siempre de tipo objeto, incluso si es posible usar un tipo más específico".En un controlador de eventos C#, ¿por qué el parámetro "remitente" debe ser un objeto?
Esto lleva a una gran cantidad de código como el manejo de eventos:
RepeaterItem item = sender as RepeaterItem;
if (item != null) { /* Do some stuff */ }
¿Por qué el consejo de convención contra la que se declara un controlador de eventos con un tipo más específico?
MyType
{
public event MyEventHander MyEvent;
}
...
delegate void MyEventHander(MyType sender, MyEventArgs e);
Am I missing a gotcha?
Para la posteridad: Estoy de acuerdo con el sentimiento general en las respuestas que la convención es a utilizar el objeto (y para pasar los datos a través de la EventArgs
incluso cuando es posible utilizar un tipo más específico, y en bienes -WORLD programándolo es importante seguir la convención.
En realidad, * todos los tipos * en C# son objetos ... –
Aunque obviamente tiene razón, mi pregunta es por qué la convención es * no * usar un tipo más específico si es posible. –
Sí, un valor de retorno en el controlador de eventos se ve mal. ¿Qué pasa si hay más de un controlador? – erikkallen