Selon http://msdn.microsoft.com/en-us/library/h0eyck3s(SV.71).aspx le paramètre sender en C# gestionnaire d'événement "est toujours de type objet, même s'il est possible d'utiliser un type spécifique."
Cela conduit à beaucoup de code de gestion des événements comme:-
RepeaterItem item = sender as RepeaterItem
if (item != null) { /* Do some stuff */ }
Maintenant, dans mon cas, je travaille avec le custom C# d'événements (plutôt que l'ASP.NET événements, pas de ASP.NET à toutes les personnes impliquées à ce jour), donc je certainement ne pas avoir à s'inquiéter accidentellement l'exécution d'une opération sur un GridView en-Tête.
Cela dit, pourquoi la convention conseiller contre le fait de déclarer un gestionnaire d'événements avec un plus spécifique? :-
MyType
{
public event MyEventHander MyEvent;
}
...
delegate void MyEventHander ( MyType sender, MyEventArgs e );
Ai-je raté une chasse aux sorcières?
Modifier
Juste essayer quelque chose pour la taille, il me semble que vous pourriez développer EventHandler<TArgs> avec:-
public class EventArgs<TContent> : EventArgs
{
public TContent Content { get; set; }
}
public delegate void EventHandler<TContent>
( object sender, EventArgs<TContent> e );
N'a que le look qui puent?
Edit 2
Avant que j'accepte une réponse, je dois dire que pour la postérité que je suis d'accord avec le sentiment général dans les réponses de la convention est d'utiliser l'objet, même lorsqu'il est possible d'utiliser un type spécifique, et dans le vrai monde de la programmation, il est important de respecter la convention.
Merci pour vos réponses!