2012-02-04 7 views
0

Utilisation de WPF/PRISM Je souhaite consigner mes messages via ILoggerFacade dans mon interface graphique (une barre d'état et une fenêtre de consignation). Le problème est que la fonction CreateLogger() est appelée si tôt dans le processus d'amorçage, que je ne peux pas résoudre un IEventAggregator.PRISM Connexion à l'interface graphique

Quelle est la façon correcte de se connecter à l'interface graphique avec tous les ILoggerFacade disponibles?

Merci, Mathieu

Répondre

0

Le shell est créé très tard dans le processus de bootstrapping, donc il ne sera même pas une fenêtre pour afficher les messages du journal initiaux provenant du programme d'amorçage.

Si vous souhaitez enregistrer des messages plus tard à l'interface graphique, vous pouvez remplacer la méthode et faire quelque chose comme ça

protected override void ConfigureContainer() 
{ 
    base.ConfigureContainer(); 

    ((MyLoggerAdapter)this.Logger).EventAggregator = 
     Container.Resolve<IEventAggregator>(); 
} 

MyLoggerAdapter est le type de l'enregistreur que vous avez créé dans votre CreateLogger override . Ensuite, dans votre implémentation de MyLoggerAdapter vous pouvez avoir

public void Log(string message, Category category, Priority priority) 
{ 
    if (EventAggregator != null) 
    { 
     // Perform logging that requires EventAggregator. 
    } 
}