Tengo una clase que implementa múltiples interfaces. Me gustaría registrar estas interfaces a través de XML. Todo lo que he encontrado es documentación para la nueva interfaz fluida. ¿Esta opción es compatible a través de XML? ¿Qué implicaría agregar esta característica?Does Castle-Windsor admite ForwardedTypes a través de la configuración XML
Respuesta
[Actualización] Esto ahora es posible en Windsor 2.1 o posterior. Consulte la documentación para la sintaxis here.
Esta característica no se ha implementado en el intérprete XML hasta el momento .. sin embargo, no es difícil añadir soporte para él a través de una instalación (obviamente, esta técnica también es útil cuando se quiere añadir otras características ausentes el analizador de configuración existente).
Así que antes que nada que añadir una instalación que detectará cuando se crea un controlador para un tipo, y al mismo tiempo se registrará cualquiera de los servicios reenviados para que apunten al controlador existente:
public class HandlerForwardingFacility : AbstractFacility
{
IConversionManager conversionManager;
protected override void Init()
{
conversionManager = (IConversionManager)Kernel.GetSubSystem(SubSystemConstants.ConversionManagerKey);
Kernel.HandlerRegistered += new HandlerDelegate(Kernel_HandlerRegistered);
}
void Kernel_HandlerRegistered(IHandler handler, ref bool stateChanged)
{
if (handler is ForwardingHandler) return;
var model = handler.ComponentModel;
if (model.Configuration == null) return;
var forward = model.Configuration.Children["forward"];
if (forward == null) return;
foreach (var service in forward.Children)
{
Type forwardedType = (Type)conversionManager.PerformConversion(service, typeof (Type));
Kernel.RegisterHandlerForwarding(forwardedType, model.Name);
}
}
}
y luego, por supuesto, tenemos que hacer uso de esta en el código, para este ejemplo voy a tener un componente de pato/perro mutante que soporta dos servicios separados - iDuck y idog:
public interface IDog
{
void Bark();
}
public interface IDuck
{
void Quack();
}
public class Mutant : IDog, IDuck
{
public void Bark()
{
Console.WriteLine("Bark");
}
public void Quack()
{
Console.WriteLine("Quack");
}
}
Ahora para configurar realidad el contenedor:
<castle>
<facilities>
<facility id="facility.handlerForwarding" type="Example.Facilities.HandlerForwardingFacility, Example" />
</facilities>
<components>
<component id="mutant" service="Example.IDog, Example" type="Example.Mutant, Example">
<forward>
<service>Example.IDuck, Example</service>
</forward>
</component>
</components>
</castle>
Y ahora felizmente podemos ejecutar una prueba como esta:
WindsorContainer container = new WindsorContainer(new XmlInterpreter());
var dog = container.Resolve<IDog>();
var duck = container.Resolve<IDuck>();
Assert.AreSame(dog, duck);
Espero que esto ayude.
- 1. does internet explorer admite e.preventDefault
- 2. Configuración Xml o Configuración a través del código?
- 3. does (w) ifstream admite diferentes codificaciones
- 4. CastleWindsor 3.0 y DefaultServiceHostFactory.RegisterContainer()?
- 5. ¿Monodevelop admite archivos de configuración?
- 6. Hacer referencia a los beans en la configuración xml creada a través de Anotaciones
- 7. ¿iOS admite operaciones de archivos a través de SMB?
- 8. a través de múltiples atributos en XML
- 9. Transferir la configuración de Python a través de diferentes PC
- 10. Does App store rechaza la aplicación IPAD que no admite orientaciones múltiples
- 11. Looping a través de XML con jQuery
- 12. Captura View.setOnClickListener() define a través de XML
- 13. ¿Cómo puedo configurar un JPA EntityListener a través de un archivo de configuración Spring XML?
- 14. xml configuración de la muestra/de aplicaciones en XML
- 15. Traducir la configuración de Spring XML a la configuración de Java
- 16. Oracle SQL Developer: compartiendo la configuración a través de Dropbox
- 17. ¿Cambiar la configuración a través de api en gmail?
- 18. Does Order Matter in the XML Read by DataContractSerializer?
- 19. Spring MVC 3: Devolver XML a través de @ResponseBody
- 20. Inyectando Entitymanager a través de XML y no anotaciones
- 21. Configuración Xml versus configuración basada en la anotación
- 22. Cómo configurar Spring Social a través de XML
- 23. JACKSON Asignación de la configuración XML Sin anotaciones
- 24. Does powershell tiene un equivalente a popen?
- 25. ¿Cómo acceder a la configuración de DPI de la pantalla a través de javascript?
- 26. Inspeccionar la configuración XML tree magento genera
- 27. JAXB adaptadores XML funcionan a través de anotaciones, pero no a través de setAdapter
- 28. PHP4: ¿Enviar XML a través de HTTPS/POST a través de cURL?
- 29. Analizador de configuración de Python que admite herencia de sección?
- 30. does red5 read tomcat-users.xml
Para que lo sepas, ahora está integrado en el marco. –
@Krzysztof: Necesito esta funcionalidad, y preferiría no reinventar la rueda. Lamentablemente, no puedo encontrar nada sobre esto en absoluto. ¿Alguna documentación o enlaces relacionados con el reenvío de tipos integrado a través de la configuración Xml? –
johny g - está en la documentación: http://www.castleproject.org/container/documentation/v21/manual/windsorconfigref.html –