MVC 5 Ninject - 没有无参数构造函数

MVC 5 Ninject - No parameterless constructor

我正在使用 MVC 5.2.3 并且我已经包含了包

在 NinjectWebCommon class(自动生成的)中我添加了 kernel.Bind<ITestRepository>().To<TestRepository>().InRequestScope()RegisterServices 方法中。然后我有

public class ControllerBase : Controller
    {
        protected readonly ITestRepository _testRepository;

        public ControllerBase(ITestRepository testRepository)
        {
            _testRepository = testRepository;
        }
    }

     public class HomeController : ControllerBase
     {
... some methods
     }

当我尝试构建解决方案时,我得到了

ControllerBase does not contain a constructor that takes 0 arguments

即使我添加无参数构造函数,它也只会触发那个构造函数,而不会注入接口。

这应该开箱即用,知道为什么不行吗?

由于 BaseController 没有无参数构造函数,并且它唯一的构造函数需要一个 ITestRepository 参数,派生类型需要通过调用基本构造函数来提供此参数。

试试这个:

public class HomeController : ControllerBase
{
    public HomeController(ITestRepository testRepository) : base(testRepository)
    {

    }
}

这样,Ninject 能够将 ITestRepository 实现注入到 HomeController(派生类型)的构造函数中,后者又调用基础构造函数(使用 base()) 传递所需的依赖项。

MSDN