Questa domanda non è specificamente correlata a Ninject. È più una questione di codice generale, ma la sto postando nel caso in cui ci fosse un modo migliore di gestire il problema in Ninject, rispetto a quello che sto cercando di fare.Accesso globale al kernel di Ninject
Vorrei sapere se è possibile accedere al kernel standard di Ninject globalmente, dalla sua istanza in Global.asax.
Ecco il codice:
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
// MVC global registration, routing and filtering code goes here...
}
protected override IKernel CreateKernel()
{
return Container;
}
private static IKernel Container
{
get
{
IKernel kernel = new StandardKernel();
kernel.Load(new ServiceModule(), new RepositoryModule());
return kernel;
}
}
}
Se ho alcune classi, per esempio, le classi di facciata che non si interfacciano con il controller, in cui vorrei iniziare una catena di dipendenza, la mia comprensione è che dovrebbero uso:
_className = kernel.Get<IClassName>();
Tuttavia, l'unico modo che conosco per farlo è quello di creare una nuova istanza del Ninject kernel standard, ma se ho capito bene, è non è una buona idea per creare una nuova istanza di il kernel di Ninject, perché fondamentalmente sta creando una seconda ke RNEL.
Quindi, è possibile accedere al kernel esistente che è stato istanziato in Global.asax all'avvio dell'applicazione, da qualsiasi punto della mia applicazione, oppure esiste un modo migliore per farlo?
saluti,
Fred Chateau
Ti capita di sapere come la creazione di una fabbrica di interesserebbe l'attuazione MVC estensioni? –
Purtroppo quella parte non lo saprei senza tentare. Ho usato il metodo di avvolgimento sopra elencato per l'applicazione su cui sto lavorando a causa di preoccupazioni e scelte di architettura uniche. – Kaiser12