2

NlogをバインドするためにNinjectを(正しく)接続しました。これが私の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がコンストラクターへの依存関係を解決すると思いましたか?

4

1 に答える 1

4

TestControllerにはそのctorが必要です...

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

...これはNInjectとは何の関係もありません。パラメータなしのctorをBaseControllerに追加し、TestControllerをそのままにしておくと、ロガーインジェクションを取得できません。

于 2012-05-11T20:49:36.633 に答える