MVC3控制器无法识别具有Ninject依赖性的基本控制器

时间:2012-05-11 20:46:36

标签: asp.net-mvc-3 ninject nlog petapoco

我已经连接Ninject(正确)绑定NLog。这是我的NinjectMVC3.cs中的RegisterService方法

kernel.Bind<ILogger>().To<NLogger>();

我正在尝试移植到PetaPoco并在此处创建了一个基本控制器:

public class BaseController : Controller
{
    protected PetaPoco.Database _database;
    protected ILogger _logger;
    protected MemberRepository _members;

    public BaseController(ILogger logger)
    {
        _database = new PetaPoco.Database("TalentSiteConnection");
        _members = new MemberRepository(_database);
        _logger = logger;
    }
}

当我像这样继承我的基本控制器时:

public class TestController : BaseController
{        
    public ActionResult Index()
    {
        TestViewModel model = new TestViewModel();
        model.Member = _members.Single<Member>(2579);
        return View("Index", model);
    }

}

并尝试运行构建我正在获取

  

'BaseController'不包含带0参数的构造函数

我做错了什么?我以为Ninject会解决对构造函数的依赖吗?

1 个答案:

答案 0 :(得分:4)

TestController需要那个ctor ......

public class TestController : BaseController
{
    public TestController(ILogger logger) : base(logger) {}

......这与NInject无关。如果你将一个无参数的ctor添加到BaseController并按原样保留你的TestController,你将无法获得记录器注入。