我开始在WPF应用程序中使用Microsoft的Prism框架与Unity,主要是为了学习一些新概念。
我一直在尝试理解依赖注入以及如何将Unity与我的视图模型一起使用,但我对自己正在做什么没有足够的掌握,甚至无法真正询问我做错了什么。
因此,我将介绍我所处的情况,并希望有人能帮助我理解我做错了哪些事情。
让我们考虑一个EventAggregator场景,其中ModuleA发布并ModuleB订阅。在我的ModuleA MainWindowViewModel中,我会有一个类构造函数,如下所示:
现在,当我注册我的ModuleA的
然后,在我的项目的
现在,我可以使用
我一直在尝试理解依赖注入以及如何将Unity与我的视图模型一起使用,但我对自己正在做什么没有足够的掌握,甚至无法真正询问我做错了什么。
因此,我将介绍我所处的情况,并希望有人能帮助我理解我做错了哪些事情。
让我们考虑一个EventAggregator场景,其中ModuleA发布并ModuleB订阅。在我的ModuleA MainWindowViewModel中,我会有一个类构造函数,如下所示:
private IEventAggregator _eventAggregator;
public MainWindowViewModel(IEventAggregator eventAggregator) {
_eventAggregator = eventAggregator;
...
}
现在,当我注册我的ModuleA的
MainWindowView
时,我会像这样做:public class ModuleA {
private readonly IRegionManager _regionManager;
public ModuleA(IRegionManager regionManager) {
_regionManager = regionManager;
}
public void Initialize() {
_regionManager.RegisterViewWithRegion("SomeRegion", typeof(MainWindowView));
}
}
然后,在我的项目的
Bootstrapper.cs
中,我会创建我的 ModuleCatalog
:public class Bootstrapper {
...
protected override void ConfigureModuleCatalog() {
base.ConfigureModuleCatalog();
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
moduleCatalog.AddModule(typeof(ModuleA.ModuleA));
...
}
}
现在,我可以使用
ServiceLocator
在我的ViewModel中实例化eventAggregator
,但我正在尝试通过依赖注入来完成这个过程,通过将我的ViewModel注册到IUnityContainer
,然后根据需要注入我的View。此外,我一直看到应该为我的ViewModel使用一个接口(即IMainWindowViewModel
)来分离关注点。
请问是否有资源可以帮助我消除明显的困惑?我已经阅读了MSDN的Prism QuickStarts,包括高级MVVM场景,但我不知道如何将说明情境化。