所以一切都好
public virtual IEnumerable<TEntity> Get()
{
return Context.Set<TEntity>().ToList();
}
但值得一试
public virtual Task<IEnumerable<TEntity>> Get()
{
return Context.Set<TEntity>().ToListAsync();
}
你会得到一个隐式的转换错误'System.Threading.Tasks.Task<System.Collections.Generic.List<TEntity>>' to 'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TEntity>>'
提出这个问题很大程度上是受到了对类似问题的回答的启发。以我的拙见,这个答案没有解释任何东西。是的,泛化情况下的协方差不起作用,尽管等等,第一个例子中的一切都好,还是不好?或者协方差仅在以下情况下才停止工作Task<>?
在第一个示例中,根本没有协变性 - 您的泛型参数类型保持不变
TEntity,但容器本身的类型发生了变化。由于该类List<TEntity>实现了接口IEnumerable<TEntity>,因此没有错误。在第二种情况下,您提到的答案中提到的非常无效的协方差就表现出来了。