Замечательно, что ASP.NET DI работает нестандартно и рекурсивно разрешает все зависимости конструктора. Хотя иногда вы хотите иметь прямой доступ к контейнеру DI. Интересно, есть ли способ? Может быть, примерно так:
IService service = Container.Instance.Resolve<IService>();
Я ничего не нашел в документах (хотя я знаю , Могу заменить встроенный DI framework).
По большей части вам это не нужно, но есть некоторые специфические случаи. В моей ситуации мне нужно инициализировать мой EF DbContext с помощью контейнера IoC при запуске приложения, чтобы инициировать автоматические миграции, которые должны работать таким образом с EF Core:
using (var context = new MyContext())
{
context.Database.Migrate();
}
Мой контекст зарегистрирован в контейнере, но в отдельной библиотеке классов. И я не хочу называть это DbContextOptions конструктором напрямую.