Я пытаюсь создать универсальный репозиторий LINQ-TO-SQL на основе этого поста , который в основном позволяет вам определить универсальный базовый класс репозитория, а затем вы можете определить все свои действительные классы репозитория, выведя из общей базы.
Я хочу использовать репозиторий с передачей или без передачи в контексте данных, поэтому я решил создать два конструктора в базовом базовом классе:
public abstract class GenericRepository<T, C>
where T : class
where C : System.Data.Linq.DataContext, new()
{
public C _db;
public GenericRepository()
{
_db = new C();
}
public GenericRepository(C db)
{
_db = db;
}
public IQueryable<T> FindAll()
... and other repository functions
}
Чтобы использовать его, я бы получил свой текущий класс хранилища:
public class TeamRepository : GenericRepository<Team, AppDataContext> { }
Теперь, если я попытаюсь использовать это с параметром:
AppDataContext db = new AppDataContext();
TeamRepository repos=new TeamRepository(db);
Я получаю ошибку:
'App.Models.TeamRepository' не содержит конструктор, который принимает 1 аргумент
Итак, похоже, что вы не можете наследовать конструкторы в C #, как бы вы это написали, чтобы я мог вызвать: TeamRepository () или TeamRepository (db)