c# event - Ajouter des gestionnaires d'événements en utilisant la réflexion




1 Answers

Vous ne pouvez pas injecter de force un gestionnaire d'événements devant d'autres gestionnaires déjà abonnés à un événement. Si vous devez d'abord appeler la méthode A, vous devez d'abord vous inscrire A.

Re votre commentaire, c'est incroyablement hacky. Premièrement, vous ne pouvez même pas compter sur un événement ayant un backend de champ délégué; il peut s'agir d'une EventHandlerList ou autre - qui n'expose pas nécessairement les hooks pratiques à moins d'inverser le retrait.

Deuxième (et plus important), il casse toutes les règles de l'encapsulation.

En général, si vous voulez être le premier, la meilleure approche consiste à remplacer la méthode OnFoo() . Le deuxième meilleur est de s'abonner en premier.

wpf evenement

J'ajoute dynamiquement des contrôles à la page en utilisant LoadControl et Controls.Add. Je dois d'une manière ou d'une autre encapsuler les gestionnaires d'événements Init et Load de ces contrôles chargés dans mon code. Donc, il devrait être un tel ordre d'événements SomeMyCode () -> Control.Init () -> AnotherMyCode () et la même chose pour Load SomeMyCode () -> Control.Load () -> AnotherMyCode () .
Mon idée était d'obtenir les gestionnaires d'événements de List of Control pour les événements Init et Load et d'ajouter les premier et dernier gestionnaires d'événements avec le code que je devais exécuter. Mais je ne peux pas comprendre comment faire cela.




Related

c# asp.net events user-controls