使用通用接口和约束导出与导入不匹配

时间:2015-12-14 09:49:34

标签: c# mef

我的界面和类如下所示:

public interface ITree<T> where T : IComparable

实现接口的类:

public class Tree<T> : ITree<T> where T : IComparable

我想导入所有实现ITree的类,其中T:IComparable with ITree

我尝试了许多不同的出口,如:

registrationITreeBuilder
    .ForTypesMatching(t => t.GetInterface(typeof(ITree<>).Name) != null)
    .Export<ITree<int>>();

registrationITreeBuilder
    .ForTypesMatching(t => t.GetInterface(typeof(ITree<>).Name) != null)
    .Export(b=>b.AsContractType(typeof(ITree<int>));

registrationITreeBuilder
    .ForTypesDerivedFrom(t => t.GetInterface(typeof(ITree<>).Name) != null)
    .Export<ITree<int>>();

等等。

但我尝试的所有出口都与进口不匹配:

[ImportMany]
public IEnumerable<ITree<int>> TreeInstances { get; set; }

如何定义导出以匹配上述导入?

0 个答案:

没有答案