我需要使用一个接口 (IDataSender) 加载一个 DLL (Data) 并使用另一个接口 (IMessageSender) 加载另一个 DLL (Message)。下面的代码生成一个错误,即正在加载的 DLL 不支持来自其他 DLL 的接口。看起来每个 DLL 都支持 MEF 使用的所有接口。
知道如何使用不同的接口加载 DLL 吗?我尝试使用 [ImportMany] 但这似乎使用相同的接口加载多个 DLL。MEF 可以支持多个接口吗?
[Import(typeof(IDataSender))]
public IDataSender DataSender;
[Import(typeof(IMessageSender))]
public IMessageSender MessageSender;
catalog_data = new AssemblyCatalog(@".\ABC.Data.dll");
container_data = new CompositionContainer(catalog_data);
container_data.ComposeParts(this);
catalog_message = new AssemblyCatalog(@".\ABC.Message.dll");
container_message = new CompositionContainer(catalog_message);
container_message.ComposeParts(this);
// DLL 1
namespace ABC.Data
{
[Export(typeof(IDataSender))]
public class DataClass : IDataSender
{
}
}
// DLL 2
namespace ABC.Message
{
[Export(typeof(IMessageSender))]
public class MessageClass : IMessageSender
{
}
}
感谢您提供的任何帮助。我是 MEF 的新手,不知道如何让它发挥作用。
假面