我在我的 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>>();
没有任何错误,只是没有结果。