gpt4 book ai didi

c# - 将 MEF 与通用基类一起使用

转载 作者:行者123 更新时间:2023-12-04 05:37:28 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 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);

但我得到一个空列表。

最佳答案

您的类型具有非默认构造函数,因此 MEF 无法为您构造对象。将 [ImportingConstructor] 属性添加到构造函数。并且不要忘记将 T1 和 T2 对象添加到 container 中。

关于c# - 将 MEF 与通用基类一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19079389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com