2009-09-15 6 views
4

Je suis en train de câbler ma première application SubSonic 3 (dans un frontal ASP.NET MVC 1.0) et je regarde le SimpleRepository de Rob. J'utilise Castle.Windsor comme un cadre d'injection.Comment passer des arguments constructeurs avec injection de dépendances en utilisant Castle.Windsor?

Lors du démarrage de l'application, je configure Castle pour lier un SubSonic SimpleRepository à un dépôt IR SubSonic. Rien de compliqué là-bas. Cependant, le SimpleRepository a une surcharge de ctor qui prend deux valeurs: un nom de chaîne de connexion et un ensemble de SimpleRepositoryOptions. N'ayant pas trop creusé dans Castle dans le passé, il n'est pas clair s'il existe un moyen de spécifier les arguments de ctor via la configuration (ou d'autres moyens).

Actuellement, j'ai une implémentation personnalisée de SimpleRepository qui crée explicitement un SimpleRepository avec ces arguments dans son ctor sans paramètre, mais si je veux les changer à tout moment, cela nécessite de changer le code et de recompiler.

Existe-t-il une manière plus élégante de configurer Castle pour prendre des arguments constructor?

Répondre

4

Voir this wiki page. Ce qu'on appelle "paramètres" sur cette page est soit un paramètre constructeur (qui est un paramètre obligatoire) ou une propriété (paramètre facultatif)

+0

ce lien est mort, et je ne pouvais pas trouver où elle est déployée - il semble qu'ils ont des erreurs de site maintenant. Ce serait plus utile si vous incluez un exemple de travail ou un extrait pertinent. – mskfisher

+0

@mskfisher: les choses changent au fil des ans. Lien mis à jour –

+0

Merci de mettre à jour le lien. Pourriez-vous également ajouter un exemple au cas où le lien disparaîtrait à nouveau dans le futur? – mskfisher

5

Si vous configurez Windsor en utilisant un fichier XML, vous définissez vos arguments ctor et leurs valeurs comme ceci:

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

Voir la référence de configuration Windsor pour plus d'informations:

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

+0

+1 pour fournir un exemple. – mskfisher

+0

@mskfisher: l'enregistrement XML est assez obsolète. –

Questions connexes