Castle Windsor调用默认构造函数而不是具有依赖项的构造函数

时间:2010-07-20 14:24:49

标签: c# castle-windsor

鉴于以下代码。

    [TestMethod] public void CanResolveILoggerTest()
    {
        var Container = new Castle.Windsor.WindsorContainer();
        Container.Register(
            Component.For<Castle.Core.Logging.ILogger>()
                .ImplementedBy<Castle.Core.Logging.TraceLogger>(),
            Component.For<NeedsLogger>()
            );
        var blah = Container.Resolve<NeedsLogger>();
    }
    public class NeedsLogger
    {
        public NeedsLogger()
        {
            throw new Exception("container shouldn't resolve me");
        }
        Castle.Core.Logging.ILogger logger;

        public NeedsLogger(Castle.Core.Logging.ILogger logger)
        {
            this.logger = logger;
        }
    }

为什么调用默认的NeedsLogger构造函数而不是具有依赖项的构造函数。

1 个答案:

答案 0 :(得分:2)

很可能是因为记录器没有准备好(它正在等待提供自己的依赖)。

我强烈建议您不要这样做,而是使用Logging Facility,它将负责注册并为您提供记录器/