MEF不会发现从byte []加载的程序集中的导出

时间:2013-04-19 21:00:43

标签: c# mef

我正在尝试使用MEF来帮助接受从数据库加载的插件的应用程序。当我尝试创建新的AssemblyCatalog并传入动态创建的程序集时,MEF似乎无法发现任何Exports

Assembly a = Assembly.Load(new AssemblyMover().GetAssemblyBytes("Plugin1"));
AssemblyCatalog c = new AssemblyCatalog(a);

AssemblyCatalog不包含任何部分(但它应该)。

如果我将可导出类移动到当前程序集中,请运行以下命令:

AssemblyCatalog c = new AssemblyCatalog(Assembly.GetExecutingAssembly());

MEF发现这部分很好(我想假设)。

接口在共享程序集中定义:

public interface IPlugin
{
    string Name { get; }
}

程序集Plugin1只有一个类:

[Export(typeof(IPlugin))]
public class TestPlugin1 : IPlugin
{
    public string Name
    {
        get { return "Plugin1"; }
    }
}

我认为MEF使用反射来发现部件,所以我验证了程序集已正确加载并包含一个类TestPlugin1

foreach (Type t in a.GetTypes())
        {
            MessageBox.Show(t.Name);
        }

有什么想法吗?

0 个答案:

没有答案