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
有构造函数。
我做错了什么?
答案 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)
{
}
}