棱镜导航:在哪里向 UnityContainer 注册 View/ViewModels



我正在学习如何使用 Prism 导航 API,它需要通过以下方式向 Unity 容器注册您的Views(如果使用 ViewModel 优先,则ViewModels

):
Container.RegisterType<object, HomeView>("HomeView");

请参阅此博客文章和 MSDN 文档。我看到的示例已通过 ConfigureContainer() 方法在 Bootstrapper 类中注册了这些类型。但有些示例在 Module 类中注册类型。我的问题是:在容器中注册这些类型的位置是否重要?

我的直觉是,在Bootstrapper ConfigureContainer()方法中注册将使注册的类型可供所有Modules,而在Module类中注册将意味着这些类型仅在该Module中注册。

简短的回答:不,它不会在您注册的位置上显示。

注册实例适合它们在哪个库中是合乎逻辑的。团结也有点不同。

示例 1:假设您有模块 A 和模块 B,并且在基础架构中将有一个接口。将此接口注册到模块 A 中的实现。然后,在模块 B 中解析此实例。它会起作用,因为您已在模块 A 中配置了它。如果没有,则示例 2 适合您。

示例 2:假设您有一个未注册的 ClassA 类型。您没有在bootstrappermodule中配置此功能,并且对此类调用解析。Unity 会自动为您执行此操作并解决它,如果他能找到依赖项,它甚至可以解决它们。 可能有一个例外。我不确定接口,我相信如果它没有注册到具体实现中,它就无法解决它。

相关内容

  • 没有找到相关文章

最新更新