我正在学习如何使用Prism Navigation API,它需要以下列方式向Unity容器注册Views
(或ViewModels
,如果使用ViewModel-first):
Container.RegisterType<object, HomeView>("HomeView");
请参阅this blog post和MSDN Documentation。我看到的示例已通过Bootstrapper
方法在ConfigureContainer()
类中注册了这些类型。但是一些示例在Module
类中注册了类型。我的问题是:在容器中注册这些类型的位置是否重要?
我的直觉是,Bootstrapper
ConfigureContainer()
方法中的注册会使所有Modules
的注册类型可用,而Module
类中的注册将表示这些类型是仅在Module
注册。
答案 0 :(得分:4)
简短的回答:不,它不会在你注册的地方发生。
在他们感兴趣的库中注册适当的实例是合乎逻辑的。团结也有点不同。
示例1: 假设您有ModuleA和ModuleB,并且您将在基础架构中拥有一个接口。您将此接口注册到ModuleA中的实现。然后,您在moduleB中解析此实例。它会工作,因为你在moduleA中配置它。如果您还没有,那么示例2适合您。
示例2:
假设你有一个未注册的ClassA类型。您没有在bootstrapper
或module
中对此进行配置,并且您在此类上调用了解决方法。 Unity会为您自动执行此操作并解决它,如果他能找到它们,它甚至可以解决依赖性问题。可能有一个例外。我不确定接口,我相信如果它没有注册到具体的实现,它就无法解决它。