2012-05-11 82 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不變,你將不會獲得記錄器注入。