0

我正在使用 Prism 和 Unity。

我有这个引导程序

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

我的CustomerModule注入了一个 MenuManager 并向其中添加菜单项:

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

但是当我的MainMenuPresenter对象也注入 MenuManager 时,它不是同一个对象:

public MainMenuPresenter(MainMenuView view, MenuManager menuManager)
{
    View = view;
    View.DataContext = this;

    foreach (string menuItemTitle in menuManager.MenuItems)
    {
        MenuItems.Add(menuItemTitle);
    }
}

如何告诉 Prism/Unity 我希望注入的 MenuManager 是单例,以便将相同的对象注入到我的每个模块和对象中?

4

1 回答 1

6

使用 Unity,您可以这样做(取自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>();
于 2009-07-21T10:54:51.330 回答