我有一个 Repository 类,它的方法FromStore<TEntity>
如下:
IQueryable<TEntity> FromStore<TEntity>() where TEntity : class;
使用它我可以执行以下操作:
MyRepository.FromStore<DatabaseModel>().SingleOrDefault(dm => dm.Id = Id);
现在,我认为FromStore
当我可以直接提供 SingleOrDefault 方法时让用户调用类是愚蠢的(你只需要指定泛型类型参数,而不是像通常情况下那样推断它)。
所以,我写了一个方法如下:
public TEntity SingleOrDefault<TEntity>(Expression<Func<TEntity, bool>> filter) where TEntity : class
{
return FromStore<TEntity>().SingleOrDefault(filter);
}
伟大的!现在我可以这样做了:
MyRepository.SingleOrDefault<DatabaseModel>(dm => dm.Id = Id);
但是,我想对所有 linq 扩展方法做同样的事情。
我目前能想到的唯一方法是在我的类上为每个 linq 方法创建类似的包装器方法。
这看起来很愚蠢,肯定有更好的方法吗?
我在想我能否以某种方式让我的Repository
类继承 linq 扩展方法扩展的类,但它们扩展了IQueriable<T>
. 我的班级没有实现这一点,因为T
存储库中不只有一个。
我能否以某种方式将 linq 扩展方法应用于我的类,即使我无法IQueryable<T>
为特定实现T
?