由于使用MEF插件,我正在从结构IOC转移到仅使用MEF。一切顺利......除了这种情况。
假设我有这个课程
[Export(typeof(IRepository<>))]
public class ConcreteRepository<T> : IRepository<T> {
}
使用结构我有一种传递类型的方法,所以我可以通过查找ConcreteRepository<T>
来获得IRepository<T>
我如何使用Composition容器实现这一点,我虽然想构建一个通用方法来调用IRepository,但是MEF会解析具有特定类型的导出吗?
感谢
答案 0 :(得分:0)
您不能对导出属性使用“泛型类型定义”,它必须是特定类型(可能具有类型属性,但必须定义它们)。
你不能只定义一个接口IRepositoryBase来封装独立于使用的类型参数的方法(如果有的话)?
interface IRepository<T> : IRepositoryBase
然后可以在export属性中使用它,即使对于派生类型:
[Import(typeof(IRepBase))]
private IRepository<string> TestRep;