MEF -导出和导入通用类型
本文关键字:类型 导入 MEF | 更新日期: 2023-09-27 18:15:44
由于使用MEF插件,我正在从结构IOC转移到只使用MEF的过程中。一切都很顺利……除了这个场景。
假设我有这个类
[Export(typeof(IRepository<>))]
public class ConcreteRepository<T> : IRepository<T> {
}
使用结构,我有一种传递类型的方法所以我可以通过查找IRepository<T>
来得到ConcreteRepository<T>
我如何使用组合容器来实现这一点,我想构造一个通用的方法来调用IRepository,但是MEF会用特定的类型解析导出吗?
谢谢
您不能为导出属性使用"泛型类型定义",它必须是一个特定的类型(可能有类型属性,但必须定义)。
你不能定义一个接口IRepositoryBase来封装独立于使用的类型参数(如果有的话)的方法吗?
interface IRepository<T> : IRepositoryBase
这可以在export属性中使用,即使是派生类型:
[Import(typeof(IRepBase))]
private IRepository<string> TestRep;