8

Ich habe eine Eigenschaft in meinen Klassen für Protokollierungsdienst.Wie kann ich Castle Windsor dazu bringen, eine Immobilie automatisch zu injizieren?

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

Und ich habe dies in meiner Komponente Registrierung:

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

jedoch Windsor scheint nicht zu den Logger zu injizieren - bin ich etwas fehlt?

Antwort

14

Der Lambda-Parameter für AddFacility ist eigentlich ein Erstellungsrückruf (er wird aufgerufen, wenn die Einrichtung erstellt wird), keine Fabrik.

Verwenden Sie stattdessen:

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

BTW Windsor spritzt automatisch Abhängigkeiten Eigenschaft, wann immer dies möglich ist.

+3

Danke, du beginnst mein persönlicher Windsor Assistent zu werden :-) –

Verwandte Themen