【问题标题】:Single .dll with MEF带有 MEF 的单个 .dll
【发布时间】:2017-03-08 12:44:50
【问题描述】:

通过反射,我可以加载单个 dll。

Assembly testAssembly = Assembly.LoadFile(@"c:\Test.dll");

但是对于 MEF,目录中的所有插件都是红色的。 有没有办法让 MEF 做同样的事情?

我能做到:

public IPlugn Load(string name)
    {
        return Plugins
          .Where(l => l.Name.Equals(name))
          .FirstOrDefault();
    }

但这是基于整个插件列表的。

亲切的问候

迪普克

【问题讨论】:

    标签: c# plugins reflection mef


    【解决方案1】:

    目录是 MEF 用于查找插件的机制 - 它们非常灵活。

    您大概在使用 DirectoryCatalog?

    如果是这样,您可以使用采用搜索模式的overload of the constructor

    var catalog = new DirectoryCatalog("C:\\", "Test.dll");
    

    或者,您可以使用AssemblyCatalog,这将允许您指定要使用的程序集。

    var catalog = new AssemblyCatalog(Assembly.LoadFile("C:\\Test.dll"));
    

    最后,如果您想要任何真正具体的行为(从 Web 服务调用加载插件,或类似的疯狂的东西),那么您可以实现自己的 ComposablePartCatalog

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多