Après réécriture de ma fonction d'invocation d'événement pour gérer les événements et leurs arguments de manière générique, j'ai commencé à passer en revue mon code (pour faire correspondre le changement), et j'ai remarqué que le compilateur a implicitement fait l'appel générique.Fonctionnalité du compilateur C# ou suis-je en train de perdre la tête?
Voilà ma fonction:
private void InvokeEvent<TArgs>(EventHandler<TArgs> invokedevent, TArgs args)
where TArgs : EventArgs
{
EventHandler<TArgs> temp = invokedevent;
if (temp != null)
{
temp(this, args);
}
}
et est la ligne ici pour appeler la fonction:
InvokeEvent(AfterInteraction, result);
Cette compile sans problème, et l'IntelliSense affiche même l'appel « correct » (avec la partie).
Est-ce une fonctionnalité de compilateur (le type générique peut, en fait, être déduit directement du second argument), ou est-ce que je deviens fou de rien et manque le point?
Eh oui ce compilateur est assez intelligent ... –