我不确定如何使用PRISM模块构建大型程序。
我创建了以下图层:
存储库 BusinessLayer - > IUnityContainer注册服务 UILayer - > MVVM已实现
如果我有3个模块,并且我在其中一个模块中有动作,如何触发另一个模块的视图加载?
我目前正在使用EventAggregator,但这需要以某种方式加载viewmodel,以便它可以加入到事件中。
理想情况下,我认为,我想做以下事情:
IOrderService服务= UnityContainer.Resolve(); service.PlaceOrder();
然后,订单服务负责加载相关的UI功能并将其注册到RegionManager。
这是正确的还是我完全错了?
由于
答案 0 :(得分:1)
我实际上喜欢你的两种方法,但使用哪种方法实际上取决于你的要求。如果你想明确让一个模块告诉另一个模块做什么,那么服务定位器就是你要走的路。但是,这种方法倾向于在模块中引入一定程度的紧耦合。
如果更紧密的耦合不是您想要的(例如,当您添加需要处理动作的第四个模块时会发生什么?),那么事件聚合器可以让您更松散耦合。这种方法确实需要更严格和前期的工作来管理区域等,因为很容易导致一些有些无法管理的事件导致调试困难(我现在在项目中遇到了这个问题)。
有点模糊的回答,但我希望它有所帮助: - )
内特