2010-11-27 25 views
6

J'implémente l'injection de dépendance Ninject dans une application MVC 2 existante qui utilise un contrôleur de base que tous les contrôleurs héritent pour définir la navigation et d'autres informations requises par la page maître. Quand je mets un contrôleur à hériter du contrôleur de base, j'obtiens l'erreur suivante: "... BaseController" ne contient pas un constructeur qui prend 0 arguments Comment est-ce que je contourne cette erreur? Je suis nouveau à Ninject et peux ' t Figure cela.MVC Base Controller et 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 
    { ... } 

Répondre

6

Ajoutant que cteur est une façon

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

} 

ou injection propriété

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


} 
+0

J'y suis allé avec l'injection de la propriété. Merci pour la solution. – scottrakes

+2

propriété inj L'ection n'est pas plus propre. C'est l'inverse. Vous voulez avoir les dépendances en lecture seule autant que possible. –

+0

oui nettoyeur était le mauvais mot ... c'est plus pratique car vous n'avez pas besoin de déclarer le ctor dans tous vos contrôleurs. – dotjoe