Как вы регистрируете компонент в Castle, который принимает другой компонент в качестве параметра в коде? - PullRequest
2 голосов
/ 01 сентября 2010

Как правильно передать другой компонент в Eq ()?

_container.Register(
                 Component.For<IDocumentManagementServiceProvider>()
            .ImplementedBy<DocumentumServiceProvider>()
            .Parameters(Parameter.ForKey("credentials").Eq(?) // <---right here

Решение:

_container.Register(
                Component.For<IDocumentManagementServiceProvider>()
                    .ImplementedBy<DocumentumServiceProvider>()
                    .ServiceOverrides(
                        ServiceOverride.ForKey("credentials").Eq("documentum.repository.credentials"))
                    .DependsOn(Property.ForKey("numberOfTimesToRetryOperation").Eq(2))
                    .DependsOn(Property.ForKey("millisecondsBetweenRetries").Eq(1000))
                    .Named("document.management.service.provider"));

1 Ответ

3 голосов
/ 01 сентября 2010

Windsor по умолчанию автоматически подключит первый компонент, который зарегистрирован в требуемом интерфейсе.Если вам не нужно это поведение или вам нужен конкретный компонент, вы можете использовать переопределения службы .

Также см. Страницу " Регистрация компонентов " в Windsorвики.

...