Как я могу заставить Castle Windsor автоматически ввести свойство?

У меня есть свойство в моих классах для службы регистрации.

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

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

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам