Supponiamo di aver implementato IFoo da Foo e IBar implementati da FirstBar e SecondBar.Castle Windsor: utilizzo della registrazione della convenzione e implementazioni specifiche
Utilizzando questa registrazione convenzione:
container.Register(
AllTypes.FromThisAssembly().Pick()
.WithService.DefaultInterface())
Avremo tre voci nel contenitore:
IFoo = Foo
IBar = FirstBar
IBar = SecondBar
Ora, come possiamo prelevarlo registrazione per essere in grado di dire il contenitore che per IBar vogliamo solo la registrazione di SecondBar? Ordina:
container.Register(
AllTypes.FromThisAssembly().Pick()
.WithService.DefaultInterface()
.For<IBar>().Select<SecondBar>())
Caso di utilizzo: abbiamo molti servizi nella nostra app tutti registrati per convenzione. Tuttavia, alcune delle interfacce di servizio hanno due o più implementazioni (ad esempio implementazione reale, implementazione falsa e implementazione del test). La registrazione della convenzione li registrerà tutti sotto la stessa interfaccia e mentre risolviamo l'interfaccia otterremo la prima implementazione (in ordine non deterministico). Vogliamo essere in grado di selezionare un'implementazione specifica per tali servizi durante la registrazione. Come possiamo farlo?
Github. Potrebbe essere una buona idea far comparire questo gruppo di utenti del castello su gruppi di google per raccogliere prima il feedback. Cheers –
Sì, Ignore è esattamente ciò di cui ho bisogno – PandaWood