FromStore<TEntity>
以下のようなメソッドとして、Repository クラスがあります。
IQueryable<TEntity> FromStore<TEntity>() where TEntity : class;
これを使用して、次のようなことができます。
MyRepository.FromStore<DatabaseModel>().SingleOrDefault(dm => dm.Id = Id);
さて、SingleOrDefault メソッドを直接提供できるときに、クラスのユーザーに呼び出しを行うのはばかげていると思いFromStore
ます (通常のように推論されるのではなく、ジェネリック型パラメーターを指定するだけで済みます)。
というわけで、以下のようにメソッドを書きました。
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
リポジトリには1 つしかないため、私のクラスはそれを実装していません。
特定IQueryable<T>
のT
.