由于将 MEF 用于插件,我正在从结构 IOC 转向仅使用 MEF。一切顺利.. 除了这种情况。
假设我有这门课
[Export(typeof(IRepository<>))]
public class ConcreteRepository<T> : IRepository<T> {
}
使用结构我有一种传递类型的方法所以我可以获得 ConcreteRepository<T>
通过查找 IRepository<T>
我如何使用 Composition 容器实现此目的,虽然我想构建一个通用方法来调用 IRepository,但 MEF 会用特定类型解析导出吗?
谢谢
最佳答案
您不能为导出属性使用“通用类型定义”,它必须是特定类型(可能有类型属性,但它们必须被定义)。
您不能只定义一个接口(interface) IRepositoryBase 来封装独立于使用的类型参数(如果存在)的方法吗?
interface IRepository<T> : IRepositoryBase
这可以在导出属性中使用,即使对于派生类型也是如此:
[Import(typeof(IRepBase))]
private IRepository<string> TestRep;
关于c# - MEF - 导出和导入通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25057809/