繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM