2

MEF を使用してジェネリック基本クラスの派生クラスをインポートする方法を理解しようとしています。これは、クラスの一般的な説明です。

interface IPlugin {}

abstract class PluginBase<T> : IPlugin {}

[Export(typeof(IPlugin))]
class Plugin1 : PluginBase<T1> {

    public Plugin1(T1 t1) : base(t1) {};

}

[Export(typeof(IPlugin))]
class Plugin2 : PluginBase<T2> {

    public Plugin1(T2 t2) : base(t2) {};
}

[ImportMany(typeof(IPlugin))]
List<IPlugin> importedList { get; set; }

プラグインをロードするために、次のコードを使用しています。

 var aggCatalog = new AggregateCatalog(catalogList);
 var container = new CompositionContainer(aggCatalog, 
            CompositionOptions.DisableSilentRejection);
 container.ComposeParts(this);

しかし、空のリストが表示されます。

4

1 に答える 1