为什么我的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;
}
}
谁能告诉我为什么有一个错误的第一个类说"基本服务不接受零参数的构造函数"?
您需要调用您的基构造函数:
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){ }