为什么我的c#类告诉我没有零参数的构造函数?

本文关键字:参数 构造函数 我的 告诉我 为什么 | 更新日期: 2023-09-27 18:04:46

我有以下内容:

public class TestService : BaseService, IDisposable
{
    public TestService(IRepositoryProvider repositoryProvider)
    {
    }
    public IRepository<Exam> Exams { get { return GetStandardRepo<Exam>(); } }
}

public class BaseService : IDisposable
{
    public BaseService(IRepositoryProvider repositoryProvider)
    {
        CreateDbContext();
        repositoryProvider.DbContext = DbContext;
        RepositoryProvider = repositoryProvider;
    }
}

谁能告诉我为什么有一个错误的第一个类说"基本服务不接受零参数的构造函数"?

为什么我的c#类告诉我没有零参数的构造函数?

您需要调用您的基构造函数:

public TestService(IRepositoryProvider repositoryProvider) : base(repositoryProvider)
{
}

您需要通过链接将IRepositoryProvider传递给BaseService构造器:

public class TestService : BaseService, IDisposable
{
    public TestService(IRepositoryProvider repositoryProvider) : 
           base(repositoryProvider)
    {
    }
    public IRepository<Exam> Exams { get { return GetStandardRepo<Exam>(); } }
}

由于您没有这样做,因此它被解释为试图使用不存在的无参数构造函数初始化BaseService

需要调用BaseService的基构造函数。像这样修改你的实现:

public class TestService : BaseService, IDisposable
{
    public TestService(IRepositoryProvider repositoryProvider)
    : base(repositoryProvider)
    {
    }
    public IRepository<Exam> Exams { get { return GetStandardRepo<Exam>(); } }
}

原因是基类不包含无参数的构造函数,即接受0个参数的构造函数。

当调用这个派生类的构造函数时,它将调用基类的无参数构造函数,因为没有对基类的构造函数的显式调用,并且由于基类中没有无参数构造函数,因此会发生上述错误。

因为TestService中的构造函数将尝试不带参数地调用BaseService

修复:

public TestService(IRepositoryProvider repositoryProvider): base(repositoryProvider){ }