【问题标题】:Shared application resources in MEFMEF 中的共享应用程序资源
【发布时间】:2013-09-25 13:09:13
【问题描述】:

为了向应用程序动态添加功能,我非常依赖 MEF,它是为第三方程序集(插件)提供接口的好工具。但是现在,我不仅想要一个可以从我的主应用程序访问的插件的通用接口,而且还为插件提供一个接口,通过它他们可以从我的主应用程序访问各种资源(例如对象)。怎么可能做到这一点?我正在考虑类似插件 API 之类的东西,但我不确定 MEF 是否提供这样的选项。

对于这项任务,我想到了两个选项:

  • 在插件实例化时将对象作为参数传递

缺点:如果我通过让我们说例如我在其他地方使用的日志对象实例,第三方插件可以轻松调用 Dispose,使其无法用于整个应用程序或其他插件。非常危险!

  • 声明全局可访问的静态方法

【问题讨论】:

    标签: c# .net api plugins mef


    【解决方案1】:

    您可能希望使用注入而不是构建插件或在某处拥有静态实例...

    您实际上可以将其他对象注入您的插件。最常见的是[ImportingConstructor]

    如果您的其他对象没有实现任何 MEF 导出,则您可能无法使用此 MEF 功能,如果是这种情况,您也可以组合例如使用您的 MEF 插件进行 Unity 注入,以便您的插件可以使用统一容器来解决某些问题。这有点棘手,但有一些解决方案。您可能想阅读一篇旧但仍然有效的博客文章: http://pwlodek.blogspot.de/2009/05/unity-mef-integration-layer.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-04
      • 2011-06-06
      • 2019-01-21
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多