2010-04-23 5 views
1

Comment pouvez-vous instancier un contrôleur qui a un argument int? En utilisant Ninject ..Ninject: constructeur de contrôleur avec argument int

Mon HomeController a un constructeur comme ceci:

 

    private int _masterId; 
    Public HomeController(int masterId){ 
     _masterId = masterId; 
} 
 

J'ai créé une usine de contrôleur comme ceci:

 

public class NinjectControllerFactory : DefaultControllerFactory 
    { 
     IKernel kernel = new StandardKernel(new ExampleConfigModule()); 

     protected override IController GetControllerInstance(Type controllerType) 
     { 

      return controllerType == null ? null 
              : (IController)kernel.Get(controllerType, 1); 

     } 

    } 
 

Répondre

4

Je ne sais pas si cela fonctionnerait avec Ninject 1.0, mais fonctionne avec 2.0

var controller = kernel.Get<IController>(new ConstructorArgument("masterId", 1)); 

Cependant c'est proba bly pas trop bonne idée de passer des arguments au constructeur manuellement lors de l'utilisation du conteneur IoC.

Questions connexes