Я использую 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.
Мой вопрос: если я хочу получить экземпляр контейнера в любом из классов controller\class, чтобы разрешить некоторую зависимость вручную, как я могу это сделать.
Ранее я работал над AutoFac и имел интерфейс зависимостей IComponentContext
, который можно вводить в любой класс, который должен выполнять любое разрешение вручную.
Обновление
Вот сценарий. Мой контроллер использует службу, инициализация которой зависит от входного параметра, переданного в методе контроллера, и, следовательно, зависимость не может быть создана во время построения.
Я понимаю, что это несколько анти-шаблон для DI, но это требование в нескольких местах, и, следовательно, инъекция контейнера DI является следующей лучшей. Простые образцы инжектора должны использовать статическую переменную для совместного использования контейнера, который я хочу избежать, а также это невозможно по способу SimpleInjectorInitializer
.