6

Existe-t-il un moyen d'exécuter la mise en œuvre de la gestion des événements lors de la gestion des événements? Par exemple, disons que j'ai une classe qui expose la norme EventHandler<T> Puis-je m'assurer que toutes les instances instanciées de cette classe ont le gestionnaire OnMyEvent, géré? (De préférence à la compilation)Mise en œuvre de la gestion des événements wireup

La seule façon de voir cela est d'avoir un gestionnaire d'événements dans le constructeur d'objets ou d'utiliser la réflexion à l'exécution. Y a-t-il des alternatives?

Également, si C# n'autorise pas cette fonctionnalité; par curiosité faire d'autres langues?

Répondre

3

événements sont généralement destinés à en option consommation par le code d'appel de l'objet - par exemple, à titre d'observateur (ou des observateurs multiples). Il est assez rare que la gestion de l'événement soit appliquée. Il n'y a pas de construction de langage/compilateur standard pour vérifier qu'un événement est souscrit à la compilation (et je suppose que ce serait très difficile, car vous pouvez vous abonner/vous désabonner à tout moment, n'importe où dans le code - éventuellement plusieurs fois, c'est-à-dire + HandlerA, + HandlerB, -HandlerA, -HandlerB - qui se termine sans abonné).

Dans le scénario que vous présentez, où il est nécessaire , il passe alors pour le constructeur semble plus approprié, mais j'utiliserions probablement Func<...> ou Action<...> dans ce cas (non EventHandler<T>). Mais c'est subjectif.

D'autres approches:

  • font une classe abstraite et forcer le consommateur à sous-classe et override un-ou-plus abstract membres
  • ont un paramètre interface que le consommateur doit fournir
+0

Merci pour la réponse. :-) –

+0

+1 pour résoudre certains problèmes de fond et idées fausses que le PO a. J'ajouterai également que si vous avez un script de construction qui exécute des tests unitaires après la construction, vous pouvez appliquer beaucoup de choses pendant le processus de construction que le compilateur seul ne peut pas faire. – Phil