TL; DR Является ли плохой практикой передавать параметры времени для конструктора с помощью контейнера?.Неплохая практика передавать параметры через контейнер IoC?
В качестве примера я создаю решение WCF, которое имеет хосты служб, построенные динамически с использованием реализации ServiceHostFactoryBase
. Эта фабрика - мой Composition Root; Он получает доступ к Unity, настраивает его и использует контейнер для разрешения ServiceHost
. Однако этот ServiceHost должен получить доступ к некоторой конфигурации в базе данных, и для определения этой конфигурации используется «constructorString».
Поскольку Unity - это парень, создающий экземпляр моего ServiceHost
, я не вижу другого решения, кроме прохождения параметра через ParameterOverride
. Но мне это не нравится. Параметр не является зависимостью, это параметр, найденный во время выполнения. Кроме того,, ServiceHost
зависит от еще одного класса, который также нуждается в «constructorString». Поэтому я буду полагаться на Единство, чтобы передать это.
Я использую Unity 3 в качестве контейнера IoC.