为什么我注入的依赖对象在每个模块中不是同一个实例?
我正在使用 Prism 和 Unity。
我有这个 bootstrapper:
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 成为 Singleton,以便将相同的对象注入到我的每个模块和对象中?
I'm using Prism and Unity.
I've got this bootstrapper:
protected override IModuleCatalog GetModuleCatalog()
{
ModuleCatalog catalog = new ModuleCatalog()
.AddModule(typeof(CustomerModule.CustomerModule))
.AddModule(typeof(EmployeesModule.EmployeesModule))
.AddModule(typeof(MenuModule.MenuModule));
return catalog;
}
And my CustomerModule gets a MenuManager injected and adds menu items to it:
public void Initialize()
{
menuManager.MenuItems.Add("Customers");
menuManager.MenuItems.Add("Other Customers");
}
But when my MainMenuPresenter object also gets MenuManager injected, it is not the same object:
public MainMenuPresenter(MainMenuView view, MenuManager menuManager)
{
View = view;
View.DataContext = this;
foreach (string menuItemTitle in menuManager.MenuItems)
{
MenuItems.Add(menuItemTitle);
}
}
How do I tell Prism/Unity that I want the injected MenuManager to be a Singleton so that the same object is injected into each of my modules and objects?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 Unity,您可以这样做(取自 MSDN on Lifetime Managers in Unity< /a>):
Using Unity, you do it like this (taken from MSDN on Lifetime Managers in Unity):