[英]Why is my C# class telling me there's no constructor with zero arguments?
我有以下几点:
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){ }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.