Je souhaite configurer le conteneur Windsor afin qu'une seule instance de style singleton puisse fournir deux ou plusieurs services via le conteneur. J'ai trouvé qu'utiliser le même type dans plusieurs déclarations de composants (config XML) entraînerait la création d'une instance de ce type pour fournir l'interface de service de chaque composant, ce qui n'est pas le comportement que je souhaite.Comment configurer une instance de composant unique fournissant plusieurs services dans Castle.Windsor?
Par exemple:
interface IA { }
interface IB { }
class AB : IA, IB { ... }
Je veux une instance de AB pour fournir à la fois les services IA et IB.
La raison spécifique pour laquelle je veux faire cela est que ma mise en œuvre DAO concrète étend plusieurs interfaces. D'un autre côté, j'ai plusieurs composants de travail qui contiennent une référence à différentes interfaces. L'instance concrète de DAO respecte cela, mais les constructeurs de ces composants distincts veulent l'implémentation de leurs interfaces séparées et je souhaite que Castle.Windsor transmette la même instance d'objet à ces conteneurs de travail via les demandes de service respectives.
lol, je pense que c'était clair comme de la boue! : P
Est-ce que quelqu'un comprend ce que je veux dire, et quelqu'un a-t-il des idées sur la façon dont je peux y parvenir grâce à la configuration XML des composants?
Le principal problème avec ceci est l'utilisation du "nouveau" opérateur, ce qui signifie que vous n'utilisez pas l'autowiring pour AB. –
La dernière ligne doit être quelque chose comme 'container.Register (Component.For() .Instance (ab) .Named (" IBImplementation "));' ou vous obtiendrez _ComponentRegistrationException: Le composant AB n'a pas pu être enregistré. Il existe déjà un composant avec ce nom. _ –
Lu55