【问题标题】:Prism 6.0 with WPF without dependency injection?带有 WPF 的 Prism 6.0 没有依赖注入?
【发布时间】:2017-03-15 00:47:21
【问题描述】:

我正在 WPF 中开发一个非常小的应用程序,在对 Caliburn.Micro 和 MVVM Light Toolkit 不满意后,我决定使用Prism 6.0 框架。

我希望能够在我的应用程序中使用区域,但我不想使用 Unity 和依赖注入,因为它对于这个应用程序来说太过分了。

如果我想要一个 Shell,它是一个定义了一个区域的主窗口,该区域将在其一个区域中显示 ViewA 或 ViewB,我该如何在不使用 Unity 或 UnityBootstrapper 的情况下做到这一点?由于所有在线示例和学习材料都使用 Unity 或其他一些 DI 系统,因此我无法弄清楚这一点。

编辑:进一步澄清:我主要是尽量避免使用 Unity/DI,因为它迫使我在此应用程序非常小的情况下使用模块,并且我不会从模块中受益,它只会使项目更难用新的眼光去理解。

【问题讨论】:

  • Unity 是多余的,但 Prism 不是吗? Prism 使用 DI,因此您可以使用 Unity 或自己滚动。

标签: c# wpf mvvm prism prism-6


【解决方案1】:

Prism 依赖于 IoC 才能发挥作用。您必须有一些东西可以解析 Prism 应用程序中的对象。这可以是内置 DI 容器之一,也可以是使用简单 Activator.CreateInstance 的自定义实现。

无论您使用受支持的 DI 容器还是您自己的实现,都不需要使用模块。如果您不需要它们,请不要使用它们。 Prism 中没有任何东西强迫您使用模块。

我很想知道您认为 Prism 是什么“矫枉过正”,因为这是一个过度使用的术语,而且通常这些 cmets 没有很好地表达。

【讨论】:

  • 如何在没有模块的情况下设置区域?例如,在这个example code 中,模块构造函数获取了区域管理器,并且区域被赋予了模块的 Initialize() 函数。
  • 当你需要的时候在你的 ViewModels 中请求区域管理器。
  • 添加为ctor参数
猜你喜欢
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多