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

をチェーンしIRepositoryProviderてコンストラクターに渡す必要があります。BaseService

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

その理由は、基本クラスにパラメーターのないコンストラクター、つまり引数を 0 取るコンストラクターが含まれていないためです。

この派生クラスのコンストラクターが呼び出されると、基本クラスのコンストラクターへの明示的な呼び出しがなく、基本クラスにパラメーターなしのコンストラクターがないため、基本クラスのパラメーターなしのコンストラクターが呼び出されます。上記のエラーが発生します。

于 2013-03-20T11:57:46.560 に答える
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 に答える
0

のコンストラクターは引数なしTestServiceで呼び出そうとするためです。BaseService

修理:

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