1

あるインターフェイス (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 が初めてで、それを機能させる方法がわかりません。

仮面

4

1 に答える 1