Как я могу заставить Castle Windsor автоматически вводить свойство? - PullRequest
8 голосов
/ 29 июня 2009

У меня на занятиях есть свойство для ведения журнала.

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

И у меня есть это при регистрации моего компонента:

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

Однако Виндзор, похоже, не вводит Logger - я что-то упустил?

1 Ответ

14 голосов
/ 30 июня 2009

Лямбда-параметр для AddFacility на самом деле является обратным вызовом создания (он вызывается при создании средства), а не фабрикой.

Используйте это вместо:

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

Кстати, Windsor автоматически вводит зависимости свойств, когда это возможно.

...