Я хотел бы иметь доступ к встроенному контейнеру IoC (IServiceProvider
, я считаю).Получить доступ к IServiceProvider/container в ядре .net
Я знаю, что, как правило, плохой практикой является доступ к этому в коде и что мы должны разрешить фреймворку вводить какие-либо зависимости, необходимые для таких вещей, как контроллеры.
Мое особое заявление для этого заключается в том, что я использую другой продукт Hangfire. Эта структура создает объекты сами. Чтобы иметь зависимости, вводимые в эти объекты, вам необходимо переопределить класс JobActivator и обратиться к своему собственному контейнеру.
This вопрос показывает, как создать новый контейнер для тестирования, но я хотел бы получить доступ к тому, который я уже создал, и не дублировать его. С каркасами DI, такими как Autofac, вы получаете доступ к контейнеру при его создании после добавления всех сервисов.
Может ли кто-нибудь помочь?
Ваш случай вполне справедлива. Иногда вам нужно отложить или отправить создание объектов, а это значит, что вам нужно перезвонить в «контейнер». Пока этот обратный вызов реализуется внутри [Корень композиции] (http://blog.ploeh.dk/2011/07/28/CompositionRoot/), это [абсолютно отлично] (http://blog.ploeh.dk /2011/08/25/ServiceLocatorrolesvs.mechanics/). – Steven