如何让Castle Windsor自动注入房产?

时间:2009-06-29 14:55:20

标签: dependency-injection castle-windsor property-injection

我的课程中有一个属性用于记录服务。

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

我在组件注册中有这个:

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

然而,温莎似乎没有注射记录器 - 我错过了什么吗?

1 个答案:

答案 0 :(得分:14)

AddFacility的lambda参数实际上是一个创建回调(它在创建工具时被调用),而不是工厂。

请改用:

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

BTW Windsor会在可能的情况下自动注入属性依赖项。