Como dice el sujeto, realmente! ¿Qué hacen?¿Qué son los "Tipos reenviados" en el contexto del registro de componentes de Castle Windsor?
Respuesta
tipos reenviados permitirá tener más de un servicio implementado por una sola aplicación, para un ejemplo concreto decir que tenemos dos interfaces para trabajar con los nodos del árbol de algún tipo:
public interface INodeAlterationProvider { ... }
public interface IChildNodeListProvider { ... }
y varios componentes de tomar una dependencia en una o ambas de esas interfaces. Sin embargo en la ejecución de cada una de esas interfaces descubre que su es una gran cantidad de funcionalidad compartida y desea combinar las implementaciones en una sola clase, junto con algunas otras características decir como:
public class NodeFactory : INodeAlterationProvider, IChildNodeListProvider { ... }
Se podría registrar dos casos de NodeFactory, uno por cada servicio que implementan:
container.Register(Component.For<INodeAlterationProvider>().ImplementedBy<NodeFactory>());
container.Register(Component.For<IChildNodeListProvider>().ImplementedBy<NodeFactory>());
Pero esto podría significar dos casos simples de NodeFactory existir - no es ideal, especialmente si es costoso de construir - y puede hacer que la depuración etc más difícil de entender, especialmente si había más de dos interfaces siendo implementadas.
Esto es donde los tipos remitidos intervienen, lo que le permite reenviar múltiples servicios a la misma aplicación, he aquí un ejemplo de hacer eso:
container.Register(Component.For<INodeAlterationProvider>().Forward<IChildNodeListProvider>().ImplementedBy<NodeFactory>());
Nota: el código de registro de componentes que se muestra aquí sólo está disponible en el tronco .
- 1. Tipos reenviados en Microsoft Unity
- 2. Castle Windsor IOC: paso de los parámetros del constructor a los componentes secundarios
- 3. Castle windsor logging facility
- 4. Castle Windsor InternalsVisibleTo Silverlight
- 5. Castle Windsor Transient Disposables
- 6. Castle Windsor: Registro automático de tipos de un ensamblaje que implementa interfaces de otro
- 7. Castle Windsor Fluent Registration - ¿Qué hace Pick()?
- 8. Dónde y cómo Castle Windsor establece la instalación de registro
- 9. Alternativas de inyección de constructor (Castle Windsor)
- 10. Castle Windsor CollectionResolver: ¿Por qué no funciona en Resolver llamadas?
- 11. Recuperar DLL del directorio con Windsor Castle
- 12. Castle Windsor - Argumento del constructor nulo
- 13. Lista de todos los tipos registrados en una instancia de contenedor de Castle Windsor
- 14. Castle Windsor que pasa los parámetros del constructor
- 15. Patrón Multiple Decorator en castle-windsor
- 16. Uso de Castle Windsor WcfFacility para crear extremos del cliente
- 17. Registros internos para Castle Windsor
- 18. Castle Windsor: ¿Cómo probar que todos los componentes registrados se pueden resolver?
- 19. Castle Windsor: ¿hay alguna manera de validar el registro sin una decisión?
- 20. Windsor castle Propiedades de inyección del objeto construido
- 21. Inyectar dependencia en CustomAttribute usando Castle Windsor
- 22. ¿Cómo puedo obtener Castle Windsor para inyectar automáticamente una propiedad?
- 23. Windsor Castle: buenas fuentes de documentación, tutoriales
- 24. Especificando la instancia para el registro de un componente con Castle Windsor
- 25. Cómo leer/resolver propiedades desde la configuración de Castle Windsor
- 26. Castle Windsor: utilizando el registro de convenciones junto con implementaciones específicas
- 27. Castle Windsor: Problema con varios constructores
- 28. Castle Windsor: ¿Mi componente transitorio será basura?
- 29. Castle Windsor Typed Factory Facility Equivalentes
- 30. Cómo deshacerse de ViewModels en Caliburn Micro y Castle Windsor
Gracias, eso explica de qué se trata. Sin embargo, en base a eso, huele como un atajo para no hacer una refactorización "adecuada" para fusionar los dos servicios ... –
Bien podría ser un olor en el ejemplo que proporcioné, se me ocurrió por un momento ... un ejemplo más probable podría ser algo así como un IExtendedLoggerFactory que amplíe ILoggerFactory y esté implementado por una sola clase que satisfaga ambas interfaces. – Bittercoder
Ah; sí, está bien, puedo ver eso. Estuve en la charla de Mike Hadlow en IoC/Windsor anoche y descubrí algunas cosas sobre el maletero allí también :) –