Как передать аргументы конструктора с помощью внедрения зависимостей, используя Castle.Windsor? - PullRequest
4 голосов
/ 16 сентября 2009

Я подключаю свое первое приложение SubSonic 3 (в интерфейсе ASP.NET MVC 1.0) и смотрю на простой репозиторий Роба. Я использую Castle.Windsor в качестве основы для инъекций.

При запуске приложения я настраиваю Castle для привязки SubSonic SimpleRepository к SubSonic IRepository. Ничего сложного там нет. Однако SimpleRepository имеет перегрузку ctor, которая принимает два значения: имя строки подключения и набор SimpleRepositoryOptions. Если в прошлом не слишком глубоко копаться в Castle, неясно, есть ли способ указать аргументы ctor с помощью конфигурации (или каким-либо другим способом).

Прямо сейчас, у меня есть собственная реализация SimpleRepository, которая явно создает SimpleRepository с этими аргументами в своем ctor без параметров, но если я хочу изменить их в любой момент времени, это требует изменения кода и перекомпиляции. *

Есть ли более элегантный способ настроить Castle на использование аргументов конструктора?

Ответы [ 2 ]

5 голосов
/ 16 сентября 2009

Если вы конфигурируете Windsor с использованием файла XML, вы определяете аргументы ctor и их значения следующим образом:

<component id="repository" service="IRepository" type="SimpleRepository" ...>
    &ltparameters>
        <connectionString>your connection string</connectionString>
        ...
    &lt/parameters>
</component>

См. Ссылку на конфигурацию Windsor для получения дополнительной информации:

http://www.castleproject.org/container/documentation/v1rc3/manual/windsorconfigref.html

4 голосов
/ 16 сентября 2009

См. эту вики-страницу . То, что называется «параметрами» на этой странице, является либо параметром конструктора (который является обязательным параметром), либо свойством (необязательный параметр)

...