2009-09-09 5 views
6

Juste un rapide: que pensent les gens de l'utilisation des délégués Action pour les événements de classe publique par rapport à la définition de leurs propres types de délégués? Je sais que beaucoup utilisent des Actions pour les délégués "mineurs" comme dans les méthodes d'extension lamdas et .ForEach(), etc., mais pour les membres d'événements de classe, est-ce que l'utilisation d'Actions est une bonne idée? Qu'est-ce que la «meilleure pratique» dans ce domaine?C#: Délégué d'action vs délégué explicite

Merci

+0

http://izlooite.blogspot.com/2011/02/delegates-vs-methods.html –

Répondre

11

Au lieu d'action, j'utilise EventHandler<TEventArgs> pour toutes les déclarations d'événements. Cela supprime le besoin de définir mon propre type de délégué. Il a également l'avantage supplémentaire de forcer le type de données à être dérivé de System.EventArgs et joue donc bien avec les modèles d'événements .Net.

+1

Mais cela vous oblige à déployer une implémentation de TEventArgs, même si vous voulez juste retourner une valeur ... Cela dit, un [ScalarEventArgs où T: struct] suffirait. – Benjol

+0

La conformité au modèle d'événement .NET vaut-elle vraiment la peine de créer une classe de conteneur héritant de System.EventArgs? Qu'est-ce que je perds vraiment en ne me conformant pas à ce modèle? – MrLane

+3

Une chose qui peut arriver est que si vous avez besoin de retourner plus tard des informations supplémentaires avec votre événement, tout ce que vous avez à faire est de l'ajouter à votre classe EventArgs. Où comme si vous revenez dire action vous devez toujours retourner une chaîne, peu importe quoi, et si vous le changez, il va casser tout votre code qui l'utilise. –

Questions connexes