Хотя вы не указали его, я предполагаю, что у вашего компонента есть один конструктор, который выглядит следующим образом:
public ServiceWithDynamicDependency(string somethingDynamic) {}
Поведение, которое вы наблюдаете, не является ошибкой - оно разработано, и вот почему.
Если требуется значение, необходимо указать фактическое значение, а null
не считается правильным значением. В противном случае Windsor будет просто передавать null
для каждого конструктора, вместо того, чтобы искать фактические зависимости для этого.
null
- это специальное значение в .NET, которое означает «нет значения». Поэтому, даже если вы явно предоставите null
в качестве аргумента, Виндзор проигнорирует его.
Чтобы решить эту проблему, вместо того, чтобы обойти это явным образом, укажите, что значение является необязательным, и предоставьте второй конструктор, который его не включает.
Виндзор достаточно умен, чтобы выбрать правильный конструктор, и если значение не указано (или ноль, как в вашем случае), он выберет конструктор без аргументов, а когда значение будет (не ноль), он выберет один со значением.