2012-05-11 10 views
2

Ninjectを正しくバインドしてNLogをバインドしました。私はそうのように私のベースコントローラを継承MVC3コントローラがNinject依存のベースコントローラを認識しない

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; 
    } 
} 

:ここで私はPetaPocoに上のポートにしようとしているし、ここでベースコントローラを作成している

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

私NinjectMVC3.csの私RegisterService方法は次のとおりです。

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

} 

と私は

を得ているビルドを実行しよう

'BaseController'に0引数を取るコンストラクタが含まれていません

私は間違っていますか?私はNinjectがコンストラクタへの依存を解決すると思った?

。そのctorのを必要とTestController

+0

カスタムコントローラファクトリまたはNinject MVC拡張機能を使用していますか? http://prideparrot.com/blog/archive/2012/4/using_ninject_in_asp_net_mvc – VJAI

答えて

4

...

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

が...これはNInjectとは何の関係もありません。 BaseControllerにパラメータのないctorを追加し、TestControllerをそのままの状態にした場合、ロガー注入は行われません。

関連する問題