Supongamos que IFo ha sido implementado por Foo e IBar implementado por FirstBar y SecondBar.Castle Windsor: utilizando el registro de convenciones junto con implementaciones específicas
El uso de este registro de la convención:
container.Register(
AllTypes.FromThisAssembly().Pick()
.WithService.DefaultInterface())
Tendremos tres entradas en el contenedor:
IFoo = Foo
IBar = FirstBar
IBar = SecondBar
Ahora bien, ¿cómo podemos ajustamos este registro para ser capaz de decir que el recipiente para ¿Queremos que SecondBar se registre solo? Clase de:
container.Register(
AllTypes.FromThisAssembly().Pick()
.WithService.DefaultInterface()
.For<IBar>().Select<SecondBar>())
Caso de uso: tenemos muchos servicios en nuestra aplicación, todos registrados por convenciones. Sin embargo, algunas de las interfaces de servicio tienen dos o más implementaciones (por ejemplo, implementación real, implementación falsa e implementación de prueba). El registro de convenciones los registrará a todos bajo la misma interfaz y, al resolver la interfaz, obtendremos la primera implementación (en orden no determinista). Queremos poder seleccionar una implementación específica para esos servicios durante el registro. ¿Cómo podemos hacer eso?
Github. Puede ser una buena idea mencionar esto en el grupo de usuarios de castillos en grupos de google primero para recopilar comentarios primero. Cheers –
Sí, el Ignorar es exactamente lo que necesito – PandaWood