c# - 为什么我不能用参数调用基本构造函数方法?

标签 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 的构造函数。但是我收到一条错误消息:

'object' does not contain a constructor that takes 1 arguments

即使 GenericRepository 有构造函数。

我做错了什么?

最佳答案

因为你的“基类”是object , 不是 GenericRepository<TEntity> .您在 TEntity 上添加了约束, 你没有继承 GenericRepository<TEntity> .也许你的意思是:

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

关于c# - 为什么我不能用参数调用基本构造函数方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37948795/

相关文章:

java - 装饰器模式: Is it required that all decorators add value despite the sequence of initialization

c++ - 我可以在类定义中实例化当前类的新对象吗

c# - 在 Mongo C# 中,分组时,如何创建包含全部内容的组列表?

c# - 使用枚举更新对象的字符串属性

c# - 在 MSBuild 配置文件中指定记录器

java - 在 Java 中使用 indexOf() 查找对象 arrayList 的索引值

oop - 什么时候编写私有(private)方法而不是 protected 方法?

c# - IDictionaryEnumerator 上的 Linq 查询可能吗?

c# - 如何添加到 .net 中的 RavenDB List<type>

c# - 传播 "volatile"属性