Я бы позволил контейнеру разрешить абстрактную фабрику, интерфейс фабрики или делегат фабрики и вместо этого внедрить это в потребителей.
Затем фабрика может принять службу как зависимость, которую фабрика разрешит.
Обновление на основе комментариев:
Если вы внедряете сервис на заводе, один и тот же экземпляр этого сервиса не будет передан каждому объектуфабрика создает?
Да, каждый объект, созданный фабрикой, получит один и тот же экземпляр службы (что обычно и требуется).Если это не , что вы хотите, введите фабрику обслуживания на заводе.Некоторые контейнеры предлагают поддержку автоматического разрешения фабричных делегатов, поэтому вы можете ввести Func<IFooService>
.
Но тогда жизненный цикл службы привязан к жизненному циклу фабрики
Как отметил @SebastianWeber в комментариях, это не ограничение всех контейнеров.Кроме того, подумайте, имеет ли это значение.Вы можете выбрать самый короткий из двух периодов жизни и использовать его для обоих.