为什么在存在 MEF 时使用服务定位器
本文关键字:服务 定位器 存在 MEF 为什么 | 更新日期: 2023-09-27 17:56:21
我开始学习Prism
后一直在思考一个问题......如果我们有MEF
来满足所需的所有进口,为什么我们需要使用Service locator
。
MEF 的通用服务定位器链接
我不明白如果两者共存,它有什么用。
它是否允许Attributeless
Imports
(我相信必须使用导出来完成导出)??
我还在公共服务定位器上阅读了此链接,但如果它们共存,如果机器人,我并没有完全了解 senario 的用法。
对此注册的任何帮助都将有所帮助... :)
有依赖关系注入和服务定位器模式。这两种模式都可以与 MEF 一起使用。使用 [Import]
或 [ImportingConstructor]
时,您使用的是依赖注入。另一方面,当你的代码中有这样的东西时:
var someObject = exportProvider.GetExportedValue<ISomeType>();
您正在使用服务位置。
你可以选择,哪一个更适合你。实际上,实际应用程序通常会混合这两种模式。
AFAIK,Prism至少为引导程序使用服务位置,但Prism不直接使用任何DI框架,因为它希望独立于特定的DI框架(默认情况下有MEF和Unity支持)。这就是为什么Prism使用适配器进行DI/服务定位 - 它们只是另一个抽象层次。