web-dev-qa-db-fra.com

Aucun argument n'est donné qui correspond au contexte de paramètre formel requis de GenericRepository <Incident> .GenericRepository (dbContext)

Je reçois ce message d'erreur qui, lorsque j'essaie d'hériter de mon GenericRepository. L'erreur indique que je dois également fournir un contexte mais je ne sais pas comment?

//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>();
}

MODIFIER:

Juste pour vérifier que j'ai compris cela?

  public class IncidentRepository: GenericRepository<Incident>
  {

    public IncidentRepository(db_SLee_FYPContext context)
    {
        this.context = context;
    }

    //Then in my genric repository
    public GenericRepository()
    {

    }
18
ASPCoder1450

L'erreur vous indique que vous n'appelez pas un constructeur de base approprié. Le constructeur dans la classe dérivée ...

public IncidentRepository(db_SLee_FYPContext context)
{
    this.context = context;
}

... fait en fait ceci:

public IncidentRepository(db_SLee_FYPContext context)
    : base()
{
    this.context = context;
}

Mais il n'y a pas de constructeur de base sans paramètre.

Vous devez résoudre ce problème en appelant le constructeur de base correspondant:

public IncidentRepository(db_SLee_FYPContext context)
    : base(context)
{ }

En C # 6, vous obtenez ce message s'il n'y a qu'un seul constructeur dans le type de base, il vous donne donc la meilleure indication possible de l'argument manquant dans le constructeur de base. En C # 5, le message serait simplement

GenericRepository ne contient pas de constructeur qui accepte 0 arguments

32
Gert Arnold