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

C# Castle Windsor调用默认构造函数,而不是具有依赖项的构造函数,c#,castle-windsor,C#,Castle Windsor,给定以下代码 [TestMethod] public void CanResolveILoggerTest() { var Container = new Castle.Windsor.WindsorContainer(); Container.Register( Component.For<Castle.Core.Logging.ILogger>() .ImplementedBy

给定以下代码

    [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;
        }
    }
[TestMethod]公共void CanResolveILoggerTest()
{
var Container=newcastle.Windsor.WindsorContainer();
集装箱。登记(
用于()的组件
.ImplementedBy(),
用于()的组件
);
var blah=Container.Resolve();
}
公众阶级需要
{
公共需求博客()
{
抛出新异常(“容器不应该解析我”);
}
Castle.Core.Logging.ILogger记录器;
公共需求记录器(Castle.Core.Logging.ILogger记录器)
{
this.logger=记录器;
}
}

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

很可能是因为记录器尚未准备就绪(它正在等待提供自己的依赖项)

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