2010-07-10 24 views
3

Je suis nouveau à ninject en utilisant ninject 2.0. Mon application est hébergée dans asp.net mvc.Ninject comment accéder au noyau pour créer des instances?

Maintenant, je ne sais pas comment accéder au noyau créé dans ma bibliothèque de classes.

Je pense que je devrais créer un noyau dans global.aspx et y charger tous les modules. Mais comment puis-je le rendre disponible tout au long de l'application?

protected void Application_Start() 
    { 
     RegisterRoutes(RouteTable.Routes); 

     IKernel kernel = new StandardKernel(new ServiceModule()); 
    } 

Où le noyau créé ci-dessus doit-il aller? et comment y accéder?

Répondre

2

Regardez on the Ninject Dojo's extensions section pour Ninject.Web.Mvc. Cela vous montrera le modèle par défaut pour gérer de telles choses (allez voir la source).

Vous pouvez l'utiliser tel quel (la plupart des utilisateurs le font) ou le personnaliser selon vos préférences.

Vous avez également tagué ceci avec CSL. Avant d'utiliser Ninject pour Service Location, cherchez pourquoi cela est considéré comme un antipattern (l'extension référencée par défaut ne rend pas le Kernel public de Global - vous devez ajouter vous-même une propriété public (mais la WCF l'intégration d'autre part fait)

+2

@mamu: Quelqu'un à la maison? Cette utilisation? Tout suivi, répondra ... –

+1

Je le fais fonctionner en injectant le noyau avec l'extension mvc où jamais j'ai besoin maintenant. mais cela ressemble à du piratage pour injecter le noyau car cela rend tellement dépendants de ninject De même que l'accès à la propriété globale de HttpApplication n'est pas très convaincant. Je veux auto injecter, je peux obtenir le noyau de CSL et faire le CIO? – mamu

+0

Aussi je parle juste des morceaux où je ne veux pas faire l'injection de constructeur. La plupart de l'implémentation est autour de l'injection automatique de constructeur, ce qui est bien. – mamu