2011-05-05 6 views
0

J'ai un contrôleur et un ActionInvoker personnalisé. Je peux régler la ActionInvoker sur mesure comme suit,Injection de propriété sans utiliser l'attribut [Inject] avec Ninject

public HomeController() 
{ 
    this.ActionInvoker = new MyActionInvoker(..); 
} 

Mais ne veux pas le faire dans chaque contrôleur (et je ne veux pas utiliser un contrôleur de base non plus). Je veux utiliser Ninject pour injecter le ActionInvoker. Comme ActionInvoker fait partie du contrôleur de base, je ne peux pas y ajouter [injecter]. J'ai cherché beaucoup et essayé quelque chose comme

Bind<HomeController>().ToSelf().WithPropertyValue("ActionInvoker", 
    x =>x.Kernel.GetService(typeof(IActionInvoker))); 

Mais cela n'a pas fonctionné. Est-ce que je le fais mal? Ou toute suggestion pour réaliser ce que je voulais. Merci

Mise à jour: Cela fonctionne, quelque chose clochait. Merci pour vos réponses.

+0

Quelle est la version MVC utilisez-vous et utilisez-vous l'une des extensions Ninject.Web.Mvc? Il y a probablement des effets secondaires avec votre implémentation actuelle. –

Répondre

1

Avez-vous essayé:

Bind<IActionInvoker>() 
    .To<MyActionInvoker>() 
    .Using<SingletonBehavior>(); 


Bind<HomeController>() 
    .ToSelf() 
    .InjectPropertiesWhere(p => p.Name == "ActionInvoker"); 
+1

Merci. Mais les méthodes que vous avez mentionnées ont été supprimées dans ninject2. Quoi qu'il en soit, la méthode que j'ai utilisée fonctionne. C'était quelque chose d'autre qui ne va pas. Ça arrive. :) –

Questions connexes