Il vous manque le code d'initialisation de votre localisateur.
Soit vous utilisez Prism (c'est le cas ?) et vous devez configurer votre bootstrapper correctement - http://msdn.microsoft.com/en-us/library/gg430868(PandP.40).aspx
Ou bien vous n'utilisez pas Prism et vous configurez simplement le localisateur manuellement (en Main
par exemple) :
IUnityContainer container = new UnityContainer();
// register the singleton of your event aggregator
container.RegisterType<IEventAggregator, EventAggregator>( new ContainerControlledLifetimeManager() );
ServiceLocator.SetLocatorProvider( () => container );
alors vous pouvez appeler dans n'importe quel endroit de votre code
var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
Edit : vous avez modifié votre question et vous mentionnez maintenant Prism. Vous devez alors créer un bootstrapper personnalisé, enregistrer vos types et exécuter le bootstrapper.
public class CustomBootstrapper : UnityBootstrapper
{
}
et appeler
var bootstrapper = new CustomBootstrapper();
bootstrapper.Run();
dans la routine de démarrage de votre application. D'après ce dont je me souviens, UnityBootstrapper
enregistre le IEventAggregator
comme singleton pour ne pas avoir à le répéter.