J'essaye de faire en sorte que mon IEventAggregator me permette de publier et d'événement dans un module et de l'attraper dans un autre. J'ai essayé mon code ci-dessous dans un seul module/projet et cela fonctionne très bien. Il échoue seulement quand j'ai un module/projet publie l'événement et un autre s'abonne à lui.IEventAggregator n'atteint pas les modules
J'ai mon IEventAggregator injecté dans les deux modules via l'unité.
J'ai 3 projets, dont deux d'entre eux ont des modules (les appeler A et B) et un est juste une bibliothèque de classe ordinaire (appeler Interfaces)
Dans la bibliothèque de classe Interfaces il y a ce code:
public class RandomTestEvent : CompositePresentationEvent<string>
{
}
dans le module a il y a ce code dans un bouton de commande de clic (ce qui est vraiment dans une vue modèle dans le projet):
var evt2 = _eventAggregator.GetEvent<RandomTestEvent>();
evt2.Publish("Testing");
Dans le module B il y a ce code:
public void Initialize()
{
var evt2 = _eventAggregator.GetEvent<RandomTestEvent>();
evt2.Subscribe(OnRandomThingDone);
}
private void OnRandomThingDone(string obj)
{
MessageBox.Show("Random Event Done With: " + obj);
}
Je peux tracer à travers et je vois s'Abonnez-vous appelé. Quand je regarde Publish geting appelé le débogueur dit Subscriptions = 1
(donc il sait que l'abonnement a été fait, donc je ne semble pas avoir 2 instances différentes de IEventAggregator.)
Mais OnRandomThingDone n'est jamais appelé après Publier.
Une idée pourquoi? (Ai-je besoin d'envoyer plus de code?) Si oui, faites le moi savoir.
Abonnez-vous à l'événement dans le même module et voir si votre code est appelé. Cela vous indiquera dans quel module se trouve le problème. – ihatemash