我目前正在开发一个Xamarin Forms应用程序,并且正在重新处理它以与Prism一起工作。我真的想要坚持MVVM设计模式(我试图成长为业余开发人员并学习如何使用它们)。
1)从MVVM设计模式的角度来看,在VM之外使用消息传递服务(Prism' EventAggregator)和UI交互(Prism的PageDialogService)是不正确的吗?我写过几个"服务"从VM调用并发现需要访问消息传递和UI服务。作为一个示例,VM调用服务,服务检索并处理一些数据,基于这些计算向用户询问问题,然后继续完成返回所需值的处理。为了正确,应该将控制权返还给VM,然后再进行操作。问这个问题?
2)如果它没有被禁止,是否可以访问VM之外的服务?在我看来,我可以将它们注入到服务的构造函数中。是否可以通过"传递"他们进入服务的功能我和其他参数一起打电话?那似乎不合适...... MVVM-ish?
更新
我不确定我的所有步骤是否都是必要的,但在下面的帮助下我得到了它的工作。首先,我将我的单件服务转换为接口(IMyService)和实现类(MyService)。接下来,我在App.xaml.cs中覆盖了ConfigureContainer并调用了Container.RegisterType<IMyService, MyService>(new ContainerControlledLifetimeManager());
然后我可以将IMyService注入到我的ViewModel中,就像IEventAggregator和IPageDialogService一样,我也可以将这些服务注入到我的实现类(MyService)的公共构造函数中。
答案 0 :(得分:0)
ad 1)事件聚合器主要用于UI,但如果您不需要更高级的功能,您也可以将其用作应用程序其他部分的消息总线。真实&#34;消息总线。
ad 2)团结将愉快地将依赖关系注入到服务中,这些服务本身就是视图模型或其他服务的依赖关系。这就是依赖注入容器的作用: - )