具有通用参数的接口中的方法

时间:2019-06-06 20:39:01

标签: c# generics methods covariance

我有这个界面

 public interface IReadRepository<out TEntity>
     {

    TEntity Single(
                Expression<Func<TEntity, bool>> predicate = null,
                Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
                bool disableTracking = true,
                params Expression<Func<TEntity, object>>[] includeProperties);

    IEnumerable<TEntity> GetAll(
                Expression<Func<TEntity, bool>> predicate = null,
                Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
                bool disableTracking = true,
                params Expression<Func<TEntity, object>>[] includeProperties);


    }

我收到一条错误消息:

  

无效方差:类型参数“ TEntity”必须在IReadRepository.Single(...)上始终有效。 “ TEntity”是协变的。无效的方差:在变数位置使用协变类型参数'TEntity'。参数必须是输入安全的。

所以我的问题是如何使它适用于方法参数,因为我要传递对实体进行操作且必须具有实体类型的谓词。有可能吗?

0 个答案:

没有答案