Этот вопрос не связан конкретно с Ninject. Это скорее общий вопрос кодирования, но я отправляю его здесь, если может быть лучший способ справиться с проблемой в Ninject, чем то, что я пытаюсь сделать.
Я хотел бы знать, можно ли получить доступ к ядру Ninject Standard Kernel глобально, из его экземпляра в Global.asax.
Вот код:
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;
}
}
}
Если у меня есть некоторые классы, например, классы фасадов, которые не взаимодействуют с контроллерами, где я хотел бы начать цепочку зависимостей, я понимаю, что я должен использовать:
_className = kernel.Get<IClassName>();
Тем не менее, единственный способ, которым я это знаю, - создать новый экземпляр ядра Ninject Standard, но если я правильно понимаю, не рекомендуется создавать новый экземпляр ядра Ninject, потому что это в основном создает второе ядро.
Итак, возможно ли получить доступ к существующему ядру, которое было создано в Global.asax при запуске приложения, из любого места в моем приложении, или есть ли лучший способ сделать это?
Привет,
Фред Шато