【问题标题】:Inject the same service instance in many ViewModels在多个 ViewModel 中注入相同的服务实例
【发布时间】:2013-06-30 10:17:57
【问题描述】:

我有一个管理视图实例的 ViewManager 类。 它由 ShellViewModel 和许多其他 ViewModel 使用,并且必须通过构造函数注入。 ShellViewModel 注入了 ViewManager。 如果我使用工厂创建新的 ViewModel,谁应该向工厂提供 ViewManager 以便将其注入新的 VM?

  1. 容器? (这意味着容器将 ViewManager 注入工厂,工厂将其注入新的 VM)
  2. ShellViewModel? (这意味着 ShellVM 执行类似 factory.Create(this.ViewManager) 的操作

最好的方法是什么?谢谢大家!

【问题讨论】:

    标签: .net mvvm dependency-injection inversion-of-control


    【解决方案1】:

    最好的方式if you're using MVVM is to use an MVVM framework。要回答您的问题,您可能希望通过工厂构造函数而不是工厂方法注入视图管理器,因此选择 1。

    虽然您确实不想自己管理视图实例 - 而是使用已经为您完成所有工作的框架,而不是重新发明一个劣质的轮子。

    【讨论】:

    • 谢谢您的回复,所以您建议我在工厂的构造函数中添加一个参数并在那里注入ViewManager?谢谢!
    • 是的,没错,如果每个工厂的实例都相同,则将其注册为容器中的单例。确实,尽管考虑一个框架,但您似乎正在解决人们已经非常出色地解决的问题。
    • 是的,只是作为一名学生,我真的很想了解各个方面并了解使其工作的每一个机制,所以我开始构建自己的简单容器和视图管理器,但现在事情变得有点困难聚在一起,所以我正在考虑:D 谢谢!
    猜你喜欢
    • 2020-05-18
    • 2018-07-05
    • 1970-01-01
    • 2014-08-07
    • 2017-11-03
    • 2020-06-25
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多