2

我开始学习后一直在思考一个问题......如果我们必须满足所有所需的导入,Prism为什么我们需要使用a 。Service locatorMEF

MEF 的通用服务定位器链接

如果两者共存,我无法理解它的用途。

它是否允许Attributeless Imports(我相信必须使用 Exports 完成导出)??

我还在通用服务定位器上阅读了链接,但如果机器人共存,我并没有完全了解它们的用法。

对此 regads 的任何帮助都会有所帮助... :)

4

1 回答 1

3

依赖注入服务定位器模式。两种模式都可以与 MEF 一起使用。使用[Import]or[ImportingConstructor]时,您正在使用依赖注入。另一方面,当你的代码中有这样的东西时:

var someObject = exportProvider.GetExportedValue<ISomeType>();

您正在使用服务位置。

你可以选择,哪一个更适合你。实际上,实际应用程序经常混合这两种模式。

AFAIK,Prism 至少为引导程序使用服务位置,但 Prism 不直接使用任何 DI 框架,因为它希望独立于特定的 DI 框架(默认情况下支持 MEF 和 Unity)。这就是 Prism 使用适配器进行 DI/服务定位的原因——它们只是另一个抽象级别。

于 2013-01-29T06:02:01.153 回答