Я пытаюсь создать общий репозиторий LINQ-TO-SQL на основе this post, который в основном позволяет вам определить общий базовый класс репозитория, а затем вы можете определить весь свой фактический репозиторий классов, исходя из общей базы.Отсутствует конструктор класса, извлеченного из общего класса
Я хочу возможность использовать репозиторий с или без прохождения в контексте данных, поэтому я решил создать два конструктора в родовом базового класса:
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
}
Чтобы использовать его, я бы derrive мой фактический класс хранилища:
public class TeamRepository : GenericRepository<Team, AppDataContext> { }
Теперь, если я пытаюсь использовать этот параметр:
AppDataContext db = new AppDataContext();
TeamRepository repos=new TeamRepository(db);
я получаю ошибку: «App.Models.TeamRepository» не содержит конструктор, который принимает аргументы 1
Таким образом, это выглядит, как вы косяк наследовать конструкторы в C#, так, как бы вы код это так я может вызвать: TeamRepository() или TeamRepository (db)
M: «Производные классы автоматически не наследуют базовые классы». должен быть «Производные классы не наследуют конструктор базового класса». –