Иногда при использовании инъекции зависимостей необходимо предоставить параметры, которые будут использоваться в конструкторе. Это то, что поддерживается в Unity (и других контейнерах для инъекций зависимостей), поэтому, когда он пытается создать экземпляр типа, он может предоставить ваши аргументы в качестве параметров в конструкторе.Передача параметров конструктора при разрешении типов в Unity: наилучшая практика
Мой вопрос: этот подход желателен?
В интерфейсе невозможно указать, какие параметры должен иметь класс реализации. Указав параметры Unity, вы предполагаете, что класс реализации имеет эти параметры, и вы устанавливаете неявные ограничения для будущих классов реализации. Эти ограничения не могут быть переданы через интерфейс.
Итак, это недостаток в том, как указаны сами интерфейсы (в .NET), например. следует ли указывать записи конструктора? Или эта функция (возможность предоставления параметров конструктора) была включена в Unity из-за какой-то другой необходимости?
Единственный реальный приемлемый подход (для меня), похоже, использует фабрику для создания классов реализации и делает инъекцию зависимостей на заводе.
Я понимаю, что мой вопрос здесь может быть неясным, поэтому я попрошу его несколько иначе: какой лучший способ сделать инъекцию зависимостей в классе, который имеет конструктор, требующий параметров?
(я не считаю, что это вопрос носит субъективный характер, так как, вероятно, следует один шаблон дизайна для данного типа инъекции зависимостей.)
EDIT:
Я хотел бы добавить, что моя главная проблема что я могу создать новый класс реализации, который имеет дополнительные параметры конструктора (где параметры конструктора не являются вещами, которые могут быть созданы единством).
Но если для конструктора требуются переменные экземпляра, я должен предоставить их самому Единству. Но интерфейс не указывает, что мне нужны эти параметры, так что, если я создам конкретную реализацию интерфейса, который имеет дополнительные параметры в конструкторе? –