2010-08-31 8 views
2

Quelle est la bonne façon de passer un autre composant dans Eq()?Comment enregistrer un composant dans Castle qui prend un autre composant en paramètre dans le code?

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

Solution:

_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")); 

Répondre

3

Windsor par auto-fil par défaut le premier composant qui est inscrit sur l'interface requise. Si vous ne voulez pas ce comportement ou si vous voulez un composant spécifique, vous pouvez utiliser service overrides.

Voir aussi la page "Registering components" du wiki Windsor.