我正在学习如何使用 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 类型。您没有在bootstrapper
或module
中配置此功能,并且对此类调用解析。Unity 会自动为您执行此操作并解决它,如果他能找到依赖项,它甚至可以解决它们。 可能有一个例外。我不确定接口,我相信如果它没有注册到具体实现中,它就无法解决它。