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会用特定的类型解析导出吗?

谢谢

MEF -导出和导入通用类型

您不能为导出属性使用"泛型类型定义",它必须是一个特定的类型(可能有类型属性,但必须定义)。

你不能定义一个接口IRepositoryBase来封装独立于使用的类型参数(如果有的话)的方法吗?

interface IRepository<T> : IRepositoryBase

这可以在export属性中使用,即使是派生类型:

[Import(typeof(IRepBase))]
private IRepository<string> TestRep;