0

我有以下内容:

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;
    }
}

有人能告诉我为什么第一堂课有错误说“基础服务不采用零参数的构造函数”吗?

4

5 回答 5

7

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

public TestService(IRepositoryProvider repositoryProvider) : base(repositoryProvider)
{
}
于 2013-03-20T11:54:37.547 回答
2

您需要通过链接将其传递IRepositoryProviderBaseService构造函数:

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

由于您尚未这样做,因此将其解释为尝试BaseService使用不存在的无参数构造函数进行初始化。

于 2013-03-20T11:55:14.703 回答
1

您需要调用 BaseService 的基本构造函数。像这样更改您的实现:

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

}
于 2013-03-20T11:55:47.680 回答
1

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

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

于 2013-03-20T11:57:46.560 回答
0

因为构造函数TestService会尝试BaseService不带参数调用。

使固定:

public TestService(IRepositoryProvider repositoryProvider): base(repositoryProvider){ }
于 2013-03-20T11:56:58.383 回答