c# - 使用泛型扩展接口不可分配给父 c#
问题描述
有一个接口继承了通用接口。
这是通用接口
public interface IBaseService<TEntity> where TEntity : BaseEntity
{
}
继承通用接口的接口
public interface IChatService :IBaseService<Messages>
{
}
然后我有一个类,它将构造函数中的通用接口作为参数。
public class BaseApi
{
IBaseService<BaseEntity> _baseService;
public BaseApi(IBaseService<BaseEntity> baseService)
{
_baseService = baseService;
}
}
当我传递实现通用接口的接口对象时,它不允许我传递接口的对象,它要求传递通用接口。
解决方案
这是很合乎逻辑的。让我们通过重命名我们的类型并创建一个新示例来简化问题:
public class BaseApi
{
public BaseApi(IBucket<Fruit> baseService) { ... }
}
我们IBucket<Messages>
代表一种具体类型的水果(苹果):
public interface IChatService :IBucket<Apple>
{
}
一桶苹果和一桶水果不一样,因为后者可以放一个橙子,而前者不能这样做。
要解决此问题,您可以更改以下签名IChatService
:
public interface IChatService :IBaseService<BaseEntity>
{
}
或者将预期的IBaseService<Messages>
类型传递给BaseApi
的 ctor。
推荐阅读
- jenkins - Jenkins 管道因文件读取错误替换错误而失败
- python - 检查两个加起来为 10 的整数之间是否出现三个问号
- javascript - 停止 setTimeout 循环,点击按钮后激活
- python-3.x - 如何在确保没有重复项的同时创建随机生成的项目列表?
- python - 在 Sklearn 中再次绘制测试、验证和训练 Acc Epochs
- assembly - 如何在 SPIM CLI 的交互式调试模式下传递参数?
- stored-procedures - 使用 ON DELETE CASCADE 删除深度嵌套的子树
- r - rstan的贝叶斯生存分析
- python-3.x - 在协程中设置标志
- c# - XAML:在类型中找不到属性