没有给出与所需形式参数 'context of GenericRepository<Incident>.GenericRepository(dbContext) 相对应的参数
Posted
技术标签:
【中文标题】没有给出与所需形式参数 \'context of GenericRepository<Incident>.GenericRepository(dbContext) 相对应的参数【英文标题】:There is no argument given that corresponds to the required formal parameter 'context of GenericRepository<Incident>.GenericRepository(dbContext)没有给出与所需形式参数 'context of GenericRepository<Incident>.GenericRepository(dbContext) 相对应的参数 【发布时间】:2016-02-15 12:49:39 【问题描述】:我在尝试从我的 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)
在 C# 6 中,如果基类型中只有一个构造函数,您会收到此消息,因此它会为您提供最好的提示,即基构造函数中缺少哪个参数。在 C# 5 中,消息只是
GenericRepository 不包含采用 0 个参数的构造函数
【讨论】:
解释得很好。 不错的答案;我希望错误消息(在这个问题的标题中看到)使用“构造函数”这个词,因为问题(和修复)的来源会更明显 @TheRedPea 是的!甚至是“隐式调用的最接近匹配的基本构造函数”。或者这个答案的链接:-) 我已经申请了,但我的代码仍然出错 “dbSet”不应该是公开的,以便可以在“IncidentRepository”中使用吗?以上是关于没有给出与所需形式参数 'context of GenericRepository<Incident>.GenericRepository(dbContext) 相对应的参数的主要内容,如果未能解决你的问题,请参考以下文章