为什么我不能用参数调用基础构造函数方法?

时间:2016-06-21 15:36:58

标签: c# oop

public class GenericRepository<TEntity> where TEntity : class
{
    internal DbContext context;
    internal DbSet<TEntity> dbSet;

    public GenericRepository(DbContext context)
    {
        this.context = context;
        this.dbSet = context.Set<TEntity>();
    }
    //snip
}

public class MyRepository<TEntity> where TEntity : GenericRepository<TEntity>
{
        public MyRepository(DbContext context) : base(context){ }
        //snip
}

我扩展了GenericRepository类,并使用base的成员变量,我需要在子构造函数中调用Base的构造函数。但我得到一个错误,上面写着:

  

&#39;对象&#39;不包含带有1个参数的构造函数

即使GenericRepository有构造函数。

我做错了什么?

2 个答案:

答案 0 :(得分:11)

因为你的&#34;基类&#34;是object,而不是GenericRepository<TEntity>。您在TEntity上添加了约束,但未从GenericRepository<TEntity>继承。也许你是这个意思:

public class MyRepository<TEntity> : GenericRepository<TEntity> where TEntity : class
{
    public MyRepository(DbContext context) : base(context){ }

答案 1 :(得分:3)

您必须将MyRepository的基类更改为GenericRepository<TEntity> 您还需要保留where TEntity : class限制

public class MyRepository<TEntity> : GenericRepository<TEntity> where TEntity : class
{
    public MyRepository(object context)
        :base(context)
    {

    }
}