あるインターフェイス (IDataSender) を使用して 1 つの DLL (データ) をロードし、別のインターフェイス (IMessageSender) を使用して別の DLL (メッセージ) をロードする必要があります。以下のコードは、読み込まれている 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 が初めてで、それを機能させる方法がわかりません。
仮面