鉴于以下代码。
[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构造函数而不是具有依赖项的构造函数。
答案 0 :(得分:2)
很可能是因为记录器没有准备好(它正在等待提供自己的依赖)。
我强烈建议您不要这样做,而是使用Logging Facility,它将负责注册并为您提供记录器/