2010-11-27 27 views
6

Estoy implementando la inyección de dependencia Ninject en una aplicación MVC 2 existente que utiliza un controlador base que todos los controladores heredan para configurar la navegación y otra información necesaria para la página maestra. Cuando establezco un controlador para heredar desde el controlador base, aparece el siguiente error: "... BaseController" no contiene un constructor que tome 0 argumentos. ¿Cómo puedo evitar este error? Soy nuevo en Ninject y puedo " t resolver esto.MVC Base Controller y 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 
    { ... } 

Respuesta

6

Añadiendo que Héctor es una forma

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

} 

o la propiedad de inyección

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


} 
+0

Fui con inyección propiedad. Gracias por la solución. – scottrakes

+2

propiedad inj La ección no es más limpia. Es al revés. Desea que las dependencias sean de solo lectura siempre que sea posible. –

+0

yes cleaner fue la palabra incorrecta ... es más conveniente, ya que no necesita declarar el ctor en todos sus controladores. – dotjoe