desde C# Via CLR:¿Por qué el tipo de emisor nula cuando se trata de eventos
Nota Mucha gente se pregunta por qué el patrón evento requiere el parámetro emisor ser siempre el tipo de objeto Después de todo, ya que el MailManager se ser el único tipo provoca un evento, con objeto una EventArgs NewMail, hace sentido más por el método de devolución de llamada a ser un prototipo de esta manera:
void MethodName(MailManager sender, NewMailEventArgs e);
El patrón requiere el parámetro emisor a ser de tipo de objeto sobre todo debido a la herencia ¿Qué pasa si Mai lManager se utiliza como clase base para SmtpMailManager? En este caso, el método de devolución de llamada debe tener el parámetro remitente como prototipo SmtpMailManager en lugar de correo Manager, pero esto no puede suceder porque SmtpMai lManager acaba de heredar el NewMai l evento Así que el código que se esperando SmtpMail Director para elevar el evento debe todavía tiene que emitir el argumento remitente a SmtpMailManager En otras palabras , el elenco sigue siendo requerido, por lo que el parámetro emisor bien podría ser escrito como objeto.
La siguiente razón para escribir el parámetro emisor como Obj ect es sólo fexibilidad Permite al delegado a ser utilizado por varios tipos que ofrecen un evento que pasa por objeto un NewMail EventArgs Por ejemplo, un PopMai lManager clase podría utilizar el delegado incluso si esta clase no se derivaron de mail Manager
yo simplemente no puedo entender por qué el remitente es un objeto - ¿Por qué puede no ser generified? así que la mayoría de las veces no es necesario hacer moldes genéricos
Formatee su texto antes de publicarlo: los espacios adicionales en esta publicación y la anterior hacen que sea muy difícil de leer (ya que todo esto se publica como código) . –