MEF逐个加载DLL

时间:2010-11-24 15:37:00

标签: c# mef

我正在尝试使用MEF在需要时加载DLL,但是,我读过的教程中的信息并不是最有用的。

This site给出了一些代码(如下所示),但没有真正解释任何内容。

private void LoadPlugins() {
  var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
  var container = new CompositionContainer(catalog);
  var batch = new CompositionBatch();
  batch.AddPart(this);
  container.Compose(batch);
}

基本上我有一个带有Run方法的接口,我正在用几个DLL实现该接口。我所追求的是能够做这样的事情(伪代码)

bob = LoadDll(dllPath);
bob.Run();

有没有办法指定“bob”的类型还是通用的?如果有人可以提供帮助,我会非常感激!

2 个答案:

答案 0 :(得分:2)

本文是否有帮助:MEF Load Plugins(dlls) from folder not in Executing assembly but another dll.Can you help? 基本上,我认为解决方案是使用AssemblyCatalog加载程序集。

答案 1 :(得分:1)

你想要的是用MEF完成的,但它非常先进。您需要构建缓存目录(请参阅我们的Codeplex站点中的示例)或使用其他元数据读取器(如CCI)。

开箱即用MEF将加载程序集以反映它们(查找mef的属性)。