Je me suis souvent posé des questions à ce sujet mais maintenant que j'ai rencontré une logique qui l'incorpore, j'ai pensé que je devais aller de l'avant et obtenir de l'aide pour déchiffrer les fondamentaux. Le problème est le suivant, je regarde une application WPF qui utilise la bibliothèque d'applications composites. Dans la source de l'application, je suis tombé sur la ligne de code suivante dans la présentation d'une vue. Par souci de commodité, je l'appellerai Présentation A:Agrégation d'événements ... Que se passe-t-il exactement?
private void OnSomethingChanged(SomeArgumentType arguement)
{
UnityImplementation.EventAggregator.GetEvent<EventA>().Publish(null);
}
Quand j'ai vu la méthode de publication dans la méthode donnée ci-dessus, mon instinct me dit qu'il doit y avoir SUBSCRIBE quelque part et dans une autre classe, je vais l'appeler présentation B il y avait les éléments suivants:
UnityImplementation.EventAggregator.GetEvent(Of EventA).Subscribe(AddressOf OnSomeEventA)
il y avait une fonction privée dans la même classe appelée OnSomeEventA qui avait une certaine logique en elle.
Ma question ici est de savoir comment tout est câblé ici? Que fait exactement le 'Publier' 'S'abonner' ici? Quand 'quelque chose' change, comment le compilateur sait-il qu'il doit suivre la logique de OnSomethingChanged qui va 'Publier' un événement qui est 'Abonné' par une autre classe où la logique du gestionnaire d'événements a été décrite? Ce sera génial de comprendre le câblage sous-jacent de ce processus.
Merci
Merci GraemeF. Je comprends que l'aggrégateur d'événements maintient une liste de méthodes à appeler lorsque la publication est appelée. Mais je suis encore un peu confus par la partie Abonnement. L'abonnement est-il effectué pendant l'exécution ou pendant le processus de compilation initial? –
Tout se passe à l'exécution. J'ai ajouté un peu plus de détails à ma réponse - espoir qui aide! – GraemeF
Cela prend tout son sens. Merci beaucoup! –