avril
2007
En plus de EventHandler, vous trouverez dans le Framework 3.5 le EventHandler générique qui vous évite de définir un délégué pour passer un EventArgs particulier.
Dans le Framework 3.5, beaucoup de choses permettent de se passer de l’écriture des delegates. Je pense notamment à Func<> et Action<>. Func prend en paramètre le type de retour et peut prendre jusqu’à 4 types d’arguments (libre à vous d’en définir plus). Quand à Action, il ne prend qu’un seul type d’agument et n’a pas de valeur de retour. Cependant, ne nous trompons pas, même si on peut se passer de l’écriture du delegate, en réalité le delegate est bien présent.
Prenons un exemple :
Imaginons que l’on veuille rajouter un Action<> qui prenne deux paramètres :
public delegate void Action<T1, T2>(T1 obj1, T2 obj2);
Ensuite, on pourra par se passer de EventHandler :
public event Action<object, EventArgs> MyEvent;
Dans ce cas, cela n’a aucun sens mais imaginons maintenant que l’on veuille que le premier paramètre de l’évènement (le sender) soit typé. Alors le EventHandler ne convient pas. Il faudrait donc définir un delegate spécial pour notre évènement.
Dans notre cas, il suffira d’utiliser notre Action<<MyClass>, <MyEvent>>