Как я могу заставить 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 автоматически внедряет зависимости свойств, когда это возможно.