Замок Виндзор - нулевой аргумент конструктора

Как я могу передать нулевой аргумент конструктора, используя Castle Windsor? Я думал, что следующее будет работать

<parameters>
  <repository>null</repository>
  <message>null</message>
</parameters>`
11.12.2008 18:26:15
3 ОТВЕТА

Не лучше ли просто иметь дополнительный общедоступный конструктор, который не принимает эти параметры, тогда вам не нужно будет регистрировать параметры в конфигурации?

1
11.12.2008 18:31:44

Это обсуждалось некоторое время назад в списке рассылки, и в то время я изучал код. Нулевые значения намеренно отфильтровываются (в основном из-за сложного разрешения типов).

Я не мог найти простой способ сделать специальный случай, чтобы добавить их.

1
11.12.2008 18:32:11
Я думаю, что причина в том, что аргументы конструктора являются обязательными зависимостями, поэтому null не имеет смысла.
Mauricio Scheffer 14.12.2008 21:05:31

Если вы хотите, чтобы они были нулевыми, это означает, что они не являются существенными зависимостями. Имея их в качестве аргументов ctor, вы предлагаете иначе. Вы должны перепроектировать свой класс, чтобы иметь другой конструктор, который принимает только существенные зависимости, если вы хотите, чтобы они не изменялись в течение всего времени существования объекта (только для чтения), или представляете их как свойства.

С Виндзором вы не можете передать пустые значения по причинам, указанным в другом ответе.

5
31.01.2009 22:15:01