2

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

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

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

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

4

1 回答 1

4

简短的回答:不,它与您注册的地方无关。

将实例注册到它们所在的库中是唯一合乎逻辑的。Unity 也有一点不同。

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

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

于 2012-04-16T14:32:37.177 回答