16

Viene visualizzato questo messaggio di errore che durante il tentativo di ereditare dal mio GenericRepository. L'errore dice che devo anche fornire un contesto, ma non sono sicuro di come?Non c'è argomento dato che corrisponda al parametro formale richiesto 'contesto di GenericRepository <Incident> .GenericRepository (dbContext)

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

EDIT:

solo per controllare che ho colto questo?

public class IncidentRepository: GenericRepository<Incident> 
    { 

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

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

    } 
+0

avrei solo bisogno di un costruttore di default nel mio incidente Repository, ma ho ancora ottenere questo errore. – ASPCoder1450

risposta

28

L'errore indica che non si chiama un costruttore di base appropriato. Il costruttore della classe derivata ...

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

... è in realtà fare questo:

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

Ma non c'è alcun costruttore di base senza parametri.

Si dovrebbe risolvere questo problema chiamando il costruttore di base matching:

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

In C# 6 si ottiene questo messaggio se c'è solo un costruttore nel tipo di base, in modo che ti dà il miglior suggerimento possibile che l'argomento nel costruttore base è mancante. In C# 5 il messaggio sarebbe semplicemente

GenericRepository non contiene un costruttore che accetta 0 argomenti

+0

Ben spiegato. – goamn

+0

Risposta piacevole; Vorrei che il messaggio di errore (visto nel titolo di questa domanda) usasse la parola "costruttore", poiché la fonte del problema (e della correzione) sarebbe stata più ovvia –

Problemi correlati