2009-07-21 4 views
0

Ich benutze Prism und Unity.Warum ist mein injiziertes Abhängigkeitsobjekt nicht die gleiche Instanz in jedem Modul?

Ich habe dieses Bootstrap:

protected override IModuleCatalog GetModuleCatalog() 
{ 
    ModuleCatalog catalog = new ModuleCatalog() 
     .AddModule(typeof(CustomerModule.CustomerModule)) 
     .AddModule(typeof(EmployeesModule.EmployeesModule)) 
     .AddModule(typeof(MenuModule.MenuModule)); 
    return catalog; 
} 

Und mein CustomerModule bekommt ein MenuManager injiziert und Menüpunkte, um es fügt hinzu:

public void Initialize() 
{ 
    menuManager.MenuItems.Add("Customers"); 
    menuManager.MenuItems.Add("Other Customers"); 
} 

Aber als mein MainMenuPresenter Objekt wird auch MenuManager injiziert, es ist nicht das gleiche Objekt:

Wie sage ich Prism/Unity, dass der injizierte MenuManager ein Singleton sein soll, so dass dasselbe Objekt in jedes meiner Module und Objekte injiziert wird?

+0

Ich frage mich, wenn ich Ihnen eine ausreichende Antwort gegeben, und wenn ja würden Sie es bitte als „Antwort“ markieren? – galaktor

Antwort

6

mit Unity, tun Sie es wie folgt (aus MSDN on Lifetime Managers in Unity):

// Register a type to have a singleton lifetime without mapping the type 
// Uses the container only to implement singleton behavior 
myContainer.RegisterType<MySingletonObject>(new ContainerControlledLifetimeManager()); 
// Following code will return a singleton instance of MySingletonObject 
// Container will take over lifetime management of the object 
myContainer.Resolve<MySingletonObject>();