【问题标题】:Using the Mef to have plugin override Core interface使用 Mef 让插件覆盖核心接口
【发布时间】:2011-07-12 07:12:24
【问题描述】:

我们正在研究将 MEF 用于插件/IoC 解决方案。

这个概念是核心项目是一个工作实例。然后插件将替换它包含的核心中的任何导出。

var catalog = new AggregateCatalog(
          new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()),
          new DirectoryCatalog("Plugin"));

如何让插件目录覆盖现有的程序集目录导出?

【问题讨论】:

    标签: ioc-container mef


    【解决方案1】:

    在此示例中,在 plugin 子文件夹中找到的任何导出都将覆盖在应用程序文件夹中找到的导出。它通过将多个导出提供程序传递给CompositionContainer 来工作。第一个导出提供程序将优先。

    var defaultExportProvider = 
        new CatalogExportProvider(new DirectoryCatalog(".","*"));
    var pluginExportProvider = 
        new CatalogExportProvider(new DirectoryCatalog(@".\plugin"));
    var container = new CompositionContainer(
        pluginExportProvider, defaultExportProvider);
    defaultExportProvider.SourceProvider = container;
    pluginExportProvider.SourceProvider = container;
    

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 1970-01-01
      • 2019-08-18
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      相关资源
      最近更新 更多