Получить экземпляр контейнера для простого инжектора
Я использую Simple Injector с проектом ASP.NET MVC. Я добавилSimpleInjector.Integration.Web.Mvc
пакет Nuget. Это добавляетSimpleInjectorInitializer
класс вApp_Start
папку и инициализирует DI. Код выглядит примерно так
public static void Initialize()
{
// Did you know the container can diagnose your configuration?
// Go to: https://simpleinjector.org/diagnostics
var container = new Container();
//Container configuration code
DependencyResolver.SetResolver(
new SimpleInjectorDependencyResolver(container));
}
Это правильно настраивает DI для контроллера MVC.
Мой вопрос: если я хочу получить экземпляр контейнера в любом из контроллера \ класса, чтобы разрешить некоторую зависимость вручную, как я могу это сделать.
Ранее я работал над AutoFac, и у него есть интерфейс зависимостиIComponentContext
который может быть введен в любой класс, который должен делать любое разрешение вручную.
Обновить:
Вот сценарий. Мой контроллер использует сервис, инициализация которого зависит от входного параметра, переданного в методе контроллера, и, следовательно, зависимость не может быть создана во время создания.
Я понимаю, что это несколько анти-паттерн для DI, но это требование в нескольких местах, и, следовательно, внедрение контейнера DI - следующая лучшая вещь. Простые образцы Injector должны использовать статическую переменную, чтобы разделить контейнер, который я хочу избежать, а также это невозможно, кстатиSimpleInjectorInitializer
работает.