使用 Prism,我可以使用 Microsoft 的 DependencyInjection 而不是使用 Prism.Unity 或 Prism.DryLoc 吗?

With Prism, can I use DependencyInjection by Microsoft rather than using either Prism.Unity or Prism.DryLoc?

我的 .NET 6 WPF 应用程序使用 Prism.Wpf 8.1.97。我也在使用 Visual Studio Community 2022(64 位)。我对使用 Prism.Unity 犹豫不决,因为 Unity 已被弃用。由于我对现在已弃用的 Unity 的体验,我不想使用 Prism.Unity。我也对 DryLoc 持谨慎态度,因为它在未来可能会遭受同样的命运。

所以,如果 Microsoft DependencyInjection 能给我类似于 Unity 的工具,我宁愿切换到 Microsoft DependencyInjection。我可以使用 Microsoft DependencyInjection 代替 Prism.Unity 或 Prism.DryLoc 吗?

您可以使用 Prism.Container.Extensions。它似乎有效,但不推荐用于生产。

Prism 依赖于命名注册,这是 Microsoft 容器所没有的功能。总而言之,与 Unity 或 Dry-Ioc 相比,Microsoft 的 DI 是一个非常 feature-limited 的容器,更多的是针对应用程序示例的概念验证。

我宁愿坚持使用 Unity,因为它是一个成熟且非常 feature-rich 的容器。虽然近期不会出新版本,但也能正常使用。

无论如何,您的应用不应过分依赖特定容器,并且它应该只用于非常非常少的 类。因此,如果需要,您以后随时可以轻松切换到不同的容器。