WPFアプリケーションでMEFを使用していますが、エクスポートの方法が原因で、またはコンテナーのクエリの方法が原因で、エクスポートがコンテナーに反映されていないかどうかわかりません。
これが私のオブジェクト階層です:
public interface ICommonInterface
{ }
[InheritedExport]
public abstract class CommonBaseClass<T> : ICommonInterface
{ }
public Class1 : CommonBaseClass<Class1>
{ }
public Class1 : CommonBaseClass<Class2>
{ }
質問の範囲外の理由で、基本クラスでTの実装を使用しています。それがそこにある理由です。CommonBaseClassのジェネリックを削除し、それが継承されたクラスである場合、次のようにコンテナからエクスポートを取得できます。
var container = new CompositionContainer(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
var exports = container.GetExportedValues<CommonBaseClass>();
私がやりたいのは、ジェネリック版のエクスポートを取得することです。
var exports = container.GetExportedValues<CommonBaseClass<ICommonInterface>>();
エラーはなく、結果はありません。