棱镜导航:在哪里使用UnityContainer注册View / ViewModels?

时间:2012-04-15 00:50:10

标签: navigation prism unity-container

我正在学习如何使用Prism Navigation API,它需要以下列方式向Unity容器注册Views(或ViewModels,如果使用ViewModel-first):

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

请参阅this blog postMSDN Documentation。我看到的示例已通过Bootstrapper方法在ConfigureContainer()类中注册了这些类型。但是一些示例在Module类中注册了类型。我的问题是:在容器中注册这些类型的位置是否重要?

我的直觉是,Bootstrapper ConfigureContainer()方法中的注册会使所有Modules的注册类型可用,而Module类中的注册将表示这些类型是仅在Module注册。

1 个答案:

答案 0 :(得分:4)

简短的回答:不,它不会在你注册的地方发生。

在他们感兴趣的库中注册适当的实例是合乎逻辑的。团结也有点不同。

示例1: 假设您有ModuleA和ModuleB,并且您将在基础架构中拥有一个接口。您将此接口注册到ModuleA中的实现。然后,您在moduleB中解析此实例。它会工作,因为你在moduleA中配置它。如果您还没有,那么示例2适合您。

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