Лично я думаю, что было бы проще предоставить метод SingleOrDefault<T>
, который принимает аргумент селектора Func<int,T>
. Затем вы можете предоставить любой селектор, который вы пожелаете, включая тот, который выбирается на основе идентификатора этой таблицы.
public abstract class Repository<T> where T : class
{
public abstract T GetById( int id );
public T SingleOrDefault( Func<int,T> selector )
{
return _dataContext.GetTable<T>().SingleOrDefault( selector );
}
}
Использование:
var myObj = repos.SingleOrDefault<MyClass>( c => c.MyClassID == id );
Сильно типизированный репозиторий мог бы затем использовать этот метод для реализации GetById ()
public class MyClassRepository : Repository<MyClass>
{
public override MyClass GetById( int id )
{
return this.SingleOrDefault( c => c.MyClassID == id );
}
}