没有给出与所需形式参数 '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) 相对应的参数的主要内容,如果未能解决你的问题,请参考以下文章

解决错误“没有给出与所需形式参数相对应的参数”?

没有给出与所需形式参数相对应的参数

没有给出与所需的形式参数“信息”相对应的参数

Asp.net Boilerplate - 没有给出与所需形式参数相对应的参数

在 Unity 脚本中:没有给出与所需形式参数相对应的参数

“没有给出与所需形式参数相对应的参数”-尝试测试OOP继承时[重复]