8

Tengo una propiedad en mis clases para el servicio de registro.¿Cómo puedo obtener Castle Windsor para inyectar automáticamente una propiedad?

private ILogger logger = NullLogger.Instance; 
public ILogger Logger 
{ 
    get { return logger; } 
    set { logger = value; } 
} 

Y tengo esto en mi registro de componentes:

container.AddFacility<LoggingFacility>(x => new LoggingFacility(LoggerImplementation.Log4net)); 

Sin embargo, no parece Windsor para inyectar el Logger - me estoy perdiendo algo?

Respuesta

14

El parámetro lambda para AddFacility es en realidad una devolución de llamada de creación (se llama cuando se crean las instalaciones), no una fábrica.

Use este lugar:

container.AddFacility("logging", new LoggingFacility(LoggerImplementation.Log4net, "path_to_log4net.config")); 

Por cierto Windsor inyecta automáticamente las dependencias de propiedad siempre que puede.

+3

Gracias, estás comenzando a ser mi asistente personal de Windsor :-) –

Cuestiones relacionadas