gpt4 book ai didi

c# - MEF - 导出和导入通用类型

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:53 24 4
gpt4 key购买 nike

由于将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com