2012-05-11 107 views
2

我已经连接Ninject(正确)绑定NLog。这里是我的NinjectMVC3.cs我RegisterService方法MVC3控制器不识别基础控制器与Ninject依赖

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会解决对构造函数的依赖关系?

+0

您使用自定义控制器工厂还是Ninject MVC扩展? http://prideparrot.com/blog/archive/2012/4/using_ninject_in_asp_net_mvc – VJAI

回答

4

需要的TestController该男星...

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

...这已经无关NInject。如果你添加了一个无参数的ctor到BaseController并且保持你的TestController不变,你将不会获得记录器注入。