gpt4 book ai didi

c# - 为什么在存在 MEF 时使用 ServiceLocator?

转载 作者:行者123 更新时间:2023-11-30 22:21:06 24 4
gpt4 key购买 nike

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

Common Service Locator link for MEF

我不明白如果这两者共存有什么用。

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

我还阅读了 this公共(public)服务定位器上的链接,但如果机器人共存,则没有完全了解使用情况。

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

最佳答案

dependency injectionservice locator模式。两种模式都可以与 MEF 一起使用。使用 [Import][ImportingConstructor] 时,您正在使用依赖注入(inject)。另一方面,当您的代码中有这样的内容时:

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

您正在使用服务位置。

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

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

关于c# - 为什么在存在 MEF 时使用 ServiceLocator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14576454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com