Я пытаюсь определить один конкретный интерфейс для всех моих репозиториев, а не просто:
public abstract class GeneralizedRepository
{
readonly IDataModel _Model;
public GeneralizedRepository(IDataModel Model) {
if (Model == null)
throw new NullReferenceException();
_Model = Model;
}
public IDataModel DataModel { get { return _Model; } }
public abstract IEnumerable<T> GetAll<T>();
public abstract T GetOne<T>(Func<T, bool> predicate);
public abstract bool Contains<T>(Func<T, bool> predicate);
public abstract void Add<T>(T entity);
public abstract void Update<T>(T entity);
public abstract bool Remove<T>(Func<T, bool> predicate);
}
Это класс, потому что мои производные репозитории имеют общий экземпляр DataModel
Теперь у меня есть конкретные реализации:
public class DetailRep : GeneralizedRepository
{
public DetailRep(IDataModel Model) : base(Model) { }
public DetailRep(UnitOfWork Unit) : base(Unit.Model) { }
public override IEnumerable<T> GetAll<T>() {
throw new NotImplementedException();
}
public override T GetOne<T>(Func<T, bool> predicate) {
throw new NotImplementedException();
}
public override bool Contains<T>(Func<T, bool> predicate) {
throw new NotImplementedException();
}
public override void Add<T>(T entity) {
throw new NotImplementedException();
}
public override void Update<T>(T entity) {
throw new NotImplementedException();
}
public override bool Remove<T>(Func<T, bool> predicate) {
throw new NotImplementedException();
}
}
Но это Подробный репозиторий , я имею в виду, что хочу заменить все T натип Сведения
Но во время компиляции выдается ошибка:
Объявление параметра типа должно быть идентификатором, а не типом