Нет аргумента, который соответствует требуемому формальному параметру 'context GenericRepository <Incident>.GenericRepository(dbContext)
Я получаю это сообщение об ошибке, которое при попытке наследовать от моего GenericRepository. Ошибка говорит, что мне нужно также предоставить контекст, но я не уверен, как это сделать?
//IncidentRepository
public class IncidentRepository : GenericRepository<Incident>
//Generic Repository (to inherit from)
public class GenericRepository<TEntity> where TEntity : class
{
internal db_SLee_FYPContext context;
internal DbSet<TEntity> dbSet;
public GenericRepository(db_SLee_FYPContext context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
ИЗМЕНИТЬ:
Просто, чтобы проверить, понял ли я это?
public class IncidentRepository: GenericRepository<Incident>
{
public IncidentRepository(db_SLee_FYPContext context)
{
this.context = context;
}
//Then in my genric repository
public GenericRepository()
{
}
Ответы
Ответ 1
Ошибка говорит вам, что вы не вызываете соответствующий базовый конструктор. Конструктор в производном классе...
public IncidentRepository(db_SLee_FYPContext context)
{
this.context = context;
}
... на самом деле делает это:
public IncidentRepository(db_SLee_FYPContext context)
: base()
{
this.context = context;
}
Но нет конструктора базы без параметров.
Вы должны исправить это, вызвав соответствующий базовый конструктор:
public IncidentRepository(db_SLee_FYPContext context)
: base(context)
{ }
В С# 6 вы получите это сообщение, если в базовом типе есть только один конструктор, поэтому он дает вам наилучший намек, какой аргумент в базовом конструкторе отсутствует. В С# 5 сообщение будет просто
GenericRepository не содержит конструктор, который принимает 0 аргументов