Контроллер MVC3 не распознает базовый контроллер с зависимостью Ninject

Я подключил Ninject (правильно) для привязки NLog. Вот мой метод RegisterService в моем NinjectMVC3.cs

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 разрешит зависимость от конструктора?

.


person lloydphillips    schedule 11.05.2012    source источник
comment
Используете ли вы собственную фабрику контроллеров или расширение Ninject MVC? prideparrot.com/blog/archive/2012/4/   -  person VJAI    schedule 12.05.2012


Ответы (1)


TestController нужен этот ctor...

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

... это не имеет ничего общего с NInject. Если вы добавили ctor без параметров в BaseController и оставили свой TestController как есть, вы не получите инъекцию регистратора.

person dotjoe    schedule 11.05.2012