2013-01-02 3 views
0

Pour une classe avec une construction inférieure, l'injection du constructeur fonctionne très bien mais pas la propriété. Que dois-je besoin d'ajouter aux conventions pour faire Inject attribut travailNInject 3 Conventions Attribut NInject non injecté

public partial class Repo 
{ 
    [Inject] 
    public ILogger Logger{get;set;} 
} 

Manchettes dans NInjectWebCommon.cs

private static void RegisterServices(IKernel kernel) 
     { 
      //Dispose all resource after the requests ends 
      kernel.Bind(x => x.FromAssembliesMatching("*").SelectAllClasses().BindAllInterface().Configure(scope=>scope.InRequestScope())); 

     } 
+0

Ninject n'est probablement pas capable de créer ce journal. Avez-vous essayé avec un objet simple? Utilisez-vous l'extension de journalisation pour Ninject? – mipe34

+0

@ mipe34 ILogger est une interface pour laquelle je n'avais développé aucune extension de journalisation. Que dois-je faire pour injecter l'interface alors? – Deeptechtons

+0

Cela devrait fonctionner. Quel composant demande le repo? Et pourquoi est-ce partiel? –

Répondre

0

J'Asuming que la classe référentiel est instancié par le cadre de l'entité en quelque sorte . Donc, si vous ne demandez pas le repo isntance avec ninject, vous devez construire l'instance existante avec ninject. Cela peut être fait avec la méthode Inject sur le noyau.

var kernel = new StandardKernel(); 
var repo = new Repo(); 
kernel.Inject(repo); 
+0

où' var Kernel = new StandardKernel() '? car le noyau n'est pas une variable globale statique – Deeptechtons

+0

Changé l'échantillon –