我有一个WPF应用程序,我想重构它来使用MvvmCross来支持用于Android实现的WPF和Mono。
目前,我们正在使用Unity3.0进行依赖项注入,并依赖于它对容器层次结构的支持(一个主容器w/主视图和视图模型和服务;对于每一个具有服务器的会话,都有一个具有有限生存期的视图、视图模型和服务的子容器)。IoC中的MvvmCross支持子容器吗?如果不是,您将如何建议以与IoC兼容的方式实现外部MvvmCross?
更新:我们不需要支持多个子容器--一个子容器在任何时候都是活动的。
谢谢!
发布于 2013-05-14 08:58:41
目前的MvvmCross框架主要针对“移动”和“平板电脑”开发。在这方面,到目前为止,我没有遇到需要多个容器的情况--因此框架采用了一个简单的单个容器方法。
如果您确实需要/需要多个容器,那么MvvmCross的设计使所有的东西都可以被覆盖。因此,如果您想要覆盖所使用的IoC库,那么您应该能够使用任何PCL IoC容器(或者注入不同的本地容器)。对于其中的每一个,您都需要为我们的IoC接口提供一个适配器--参见IMvxIoCProvider.cs
此外,虽然我不完全理解您当前的需求(我比文本更了解代码!),但其他适合您特定问题领域的可能性包括:
IMyService注册了一个类型,那么注册第二个类型将替换第一个类型。IoCContainer容器注册第二个MvvmCross,这样您就可以通过第二个容器提供您的子对象。这可能不是完美的构造函数注入,但应该允许您密切控制子容器生命周期。virtual添加到接口方法中),您还可以考虑从SimpleContainer继承以覆盖功能并提供多个解析器字典。总的来说,我认为你应该有很多选择.但是,需要注意的一件事是确保您了解每个应用程序平台上容器的生命周期。WPF的生命周期很简单--应用程序启动,应用程序退出--但是WindowsPhone、WindowsStore和Android应用程序可以通过不同的方式(快捷方式、墓碑处理、搜索等)启动。
https://stackoverflow.com/questions/16514691
复制相似问题