Ich habe eine MVC 5-Anwendung, die verwendet Ninject und Ich füge Hangfire zu.Hangfire Konfiguration und Ninject Konfiguration
Wenn ich Ninject hinzugefügt habe, habe ich das NinjectWebCommon
nugget-Paket wegen seiner Einfachheit in der Konfiguration verwendet. Daher wird Ninject jetzt durch die Klasse NinjectWebCommon
konfiguriert, die einen Standardkernel erstellt und die Bindungen hinzufügt.
Außerdem habe ich einige benutzerdefinierte Modul erstellt, die ich laden, wenn der Kernel Erstellung
private static IKernel CreateKernel() {
var kernel = new StandardKernel(new MyCustomModule());
try {
kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch {
kernel.Dispose();
throw;
}
}
Die Ninject Web Gemeinsame durch die WebActivatorEx
Klasse registriert ist
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyProject.Web.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(MyProject.Web.NinjectWebCommon), "Stop")]
Nun ist das Problem bezieht sich auf, wie man Lass Hangfire die Ninject-Konfiguration sehen. Mit Blick auf die Hangfire.Ninject
Paket kann ich
Das Paket bietet eine Erweiterungsmethode für IGlobalConfiguration Schnittstelle lesen:
var kernel = new StandardKernel();
GlobalConfiguration.Configuration.UseNinjectActivator(kernel);
Nun meine Frage lautet:
- Wegen der
IGlobalConfiguration
Schnittstelle, ich sollte die Hangfire Ninject-Konfiguration innerhalb der OWIN-Startmethode hinzufügen (wo die Hangfire-Konfiguration bereits platziert ist). Wie soll ich den aktuellen Ninject Kernel (die, die NinjectWebCommon konfiguriert? - Was ist mit der Reihenfolge der Ausführung? Ist die
WebActivatorEx
vor oder nach der Inbetriebnahme OWIN Ausführung? - Was passiert, wenn ich versuche, die Konfiguration zweimal ausführen ?
Allgemeiner gesagt, wie kann ich die Ninject Konfiguration zwischen den beiden teilen?
Edit: Ersetzt benutzerdefinierte Eigenschaft Vorschlag mit besseren Bootstrapper basierte Vorschlag, und fügte ein bisschen auf Zusammensetzung Wurzeln. – CrazyPyro