8

Ho una proprietà sulle mie classi per il servizio di registrazione.Come posso convincere Castle Windsor a iniettare automaticamente una proprietà?

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

E ho questo nella mia registrazione del componente:

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

Tuttavia, Windsor non sembra iniettare il Logger - mi sto perdendo qualcosa?

risposta

14

Il parametro lambda per AddFacility è in realtà un callback di creazione (viene chiamato quando viene creata la funzione), non una fabbrica.

Utilizzare questo invece:

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

BTW Windsor inietta automaticamente le dipendenze di proprietà ogni volta che può.

+3

Grazie, stai iniziando a diventare il mio assistente personale di Windsor :-) –