首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MvvmCross IoC中的子容器

MvvmCross IoC中的子容器
EN

Stack Overflow用户
提问于 2013-05-13 04:02:47
回答 1查看 1.3K关注 0票数 1

我有一个WPF应用程序,我想重构它来使用MvvmCross来支持用于Android实现的WPF和Mono。

目前,我们正在使用Unity3.0进行依赖项注入,并依赖于它对容器层次结构的支持(一个主容器w/主视图和视图模型和服务;对于每一个具有服务器的会话,都有一个具有有限生存期的视图、视图模型和服务的子容器)。IoC中的MvvmCross支持子容器吗?如果不是,您将如何建议以与IoC兼容的方式实现外部MvvmCross?

更新:我们不需要支持多个子容器--一个子容器在任何时候都是活动的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-14 08:58:41

目前的MvvmCross框架主要针对“移动”和“平板电脑”开发。在这方面,到目前为止,我没有遇到需要多个容器的情况--因此框架采用了一个简单的单个容器方法。

如果您确实需要/需要多个容器,那么MvvmCross的设计使所有的东西都可以被覆盖。因此,如果您想要覆盖所使用的IoC库,那么您应该能够使用任何PCL IoC容器(或者注入不同的本地容器)。对于其中的每一个,您都需要为我们的IoC接口提供一个适配器--参见IMvxIoCProvider.cs

此外,虽然我不完全理解您当前的需求(我比文本更了解代码!),但其他适合您特定问题领域的可能性包括:

  • 对于MvvmCross对象,可以始终保留当前的IoC容器,但是对类使用单独的IoC系统。虽然有点过时,但这个关于创建自定义自定义ViewModelLocator的博客在使用TinyIoC和构造函数注入的过程中帮助@gshackles查看他在https://github.com/gshackles/CrossBar中构建了什么
  • 如果需要,MvvmCross容器允许您替换解析器--也就是说,如果您为接口IMyService注册了一个类型,那么注册第二个类型将替换第一个类型。
  • 您可以向主IoCContainer容器注册第二个MvvmCross,这样您就可以通过第二个容器提供您的子对象。这可能不是完美的构造函数注入,但应该允许您密切控制子容器生命周期。
  • 通过一些小的更改(继承),您可以轻松地创建当前的“简单”MvvmCross容器的多个副本--目前唯一迫使该对象成为单例的是它的继承。
  • 通过一些小的更改(将virtual添加到接口方法中),您还可以考虑从SimpleContainer继承以覆盖功能并提供多个解析器字典。

总的来说,我认为你应该有很多选择.但是,需要注意的一件事是确保您了解每个应用程序平台上容器的生命周期。WPF的生命周期很简单--应用程序启动,应用程序退出--但是WindowsPhone、WindowsStore和Android应用程序可以通过不同的方式(快捷方式、墓碑处理、搜索等)启动。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16514691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档