2010-11-27 17 views
6

すべてのコントローラがマスターページに必要なナビゲーションとその他の情報を設定するために継承するベースコントローラを使用する既存のMVC 2アプリケーションにNinject依存関係注入を実装しています。 "... BaseController 'に0引数を取るコンストラクタが含まれていませんこのエラーを回避するにはどうすればよいですか?私はNinjectを初めて使用していて、トンのフィギュアこれを。MVCベースコントローラとNinject

public class BaseController : Controller 
    { 
     private INavigationRepository navigationRepository; 
     private ISessionService sessionService; 


     public BaseController(INavigationRepository navigationRepository, IMembershipService membershipService, ISessionService sessionService) 
     { 
      this.navigationRepository = navigationRepository; 
      this.sessionService = sessionService; 
     } 
    } 


public class HomeController: BaseController 
    { ... } 

答えて

6

そのctorの追加は一つの方法

public class BaseController : Controller 
{ 
    [Inject] 
    public INavigationRepository navigationRepository { get; set; } 
    [Inject] 
    public ISessionService sessionService { get; set; } 


} 
+0

プロパティ注射と一緒に行った

public class HomeController: BaseController { public HomeController(INavigationRepository navigationRepository, IMembershipService membershipService, ISessionService sessionService) : base(navigationRepository, membershipService, sessionService) { } } 

または財産の注射である。解決してくれてありがとう。 – scottrakes

+2

プロパティINJ排除はよりクリーンではありません。それはもう一方の方法です。可能であれば、依存関係を読み込み専用にしたいと考えています。 –

+0

yes cleanerが間違った言葉でした...あなたのすべてのコントローラーでctorを宣言する必要がないので、より便利です。 – dotjoe

関連する問題