首页 > 解决方案 > c# 类从基类继承,带有依赖注入的构造函数

问题描述

我有一个使用Dependency Injection(Ninject)的项目,其中有以下课程:

public class SecurityService : BaseService
    {
        ISecurityRepository _securityRepo = null;

        public SecurityService(ISecurityRepository securityRepo)
        {
            _securityRepo = securityRepo;
        }
}

因为BaseService将在许多其他服务类中引用,所以我想在那里添加一个方法,该方法也可以转到 Data Repository 并获取一些信息,因此我不必在其他服务类中重复相同的代码。

这是我所拥有的BaseRepository

public partial class BaseService
    {

        IEntityRepository _entityRepo = null;

        public BaseService(IEntityRepository entityRepo)
        {
            _entityRepo = entityRepo;
        }

         public Settings AppSettings
        {
            get
            {
                return _entityRepo.GetEntitySettings();
            }
        }
}

但是当我编译时出现以下错误:

There is no argument given that corresponds to the required formal parameter 'entityRepo' of 'BaseService.BaseService(IEntityRepository)'   

在此处输入图像描述

这个错误是有道理的,因为现在我有一个构造函数,我猜它正在期待一些东西。

任何线索如何解决这个问题,但我仍然可以在BaseRepository课堂上进行依赖注入?

更新

我只是试图删除构造函数并使用该属性[Inject],但在调试时我看到它_entityRepoNULL.

在此处输入图像描述

标签: c#ninject

解决方案


通过子类构造函数将 Repository 对象传递给基类:

public SecurityService(ISecurityRepository securityRepo) : base(IEntityRepository)
{
  //Initialize stuff for the child class
}

推荐阅读