2012-10-04 10 views
5

Below zu bekommen, ist NinjectHttpApplication Konfiguration ..Wie Instanz von Ninject

public class MvcApplication : NinjectHttpApplication 
{ 
     public MvcApplication() 
     { 
      Error += NinjectWebsiteApplication_Error; 
     } 
}  

protected override IKernel CreateKernel() 
{ 
     var kernel = new StandardKernel(); 
     kernel.Load<ApplicationConfig>(); 
     return kernel; 
} 

void NinjectWebsiteApplication_Error(object sender, System.EventArgs e) 
{ 
     ILogger _iLogger = **//How to get instance of Applogger here from Ninject kernel..** 
} 

Unten ist die ApplicationConfig Klasse ...

public class ApplicationConfig : NHibernateNinjectModule 
{ 

    public ApplicationConfig() 
    { 
    //other settings such as ddl script generation is present here 
    } 
    public override void Load() 
    {     
     base.Load(); 
     Bind<ILogger>().To<AppLogger>().InSingletonScope(); 
    } 
} 

Antwort

3
void NinjectWebsiteApplication_Error(object sender, System.EventArgs e) 
{ 
    var kernel = CreateKernel(); 
    ILogger _iLogger = kernel.Get<ILogger>(); 
} 

Ok, wie es NinjectHttpApplication speichert Objekt Kernel erzeugt scheint in

public IKernel Kernel 
{ 
    get { return _kernel; } 
} 

So können Sie oben

void NinjectWebsiteApplication_Error(object sender, System.EventArgs e) 
{ 
    ILogger _iLogger = Kernel.Get<ILogger>(); 
} 
+0

Danke für die Antwort schreiben. Müssen wir den Kernel erneut erstellen, um auf die Instanz zugreifen zu können? Weil wir in ApplicationConfig() viele andere Dinge tun, wie das Erstellen von ddl-Skripten für die Anwendung. Wenn also ein Fehlerereignis ausgelöst wird, wird CreateKernel() aufgerufen und Skripte werden erneut generiert. Ich erkannte, ich brauche diese Instanz in Aktion Filter und versuchte mit "inject" -Attribut auf der Eigenschaft, aber seine Angabe Objekt Referenzfehler. In diesem Fall funktioniert Inject Attribut oder Readonly Eigenschaft der Schnittstelle. – Sunny

+0

Ich habe meine Antwort bearbeitet – archil

+0

Wie greifen wir auf _kernel Variable. Benötige ich etwas wie das? ... http://stackoverflow.com/questions/5031678/getting-started-with-ninject-in-asp-net-mvc-3 – Sunny

Verwandte Themen