2010-07-20 67 views
1

给定以下代码。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构造函数被调用而不是具有依赖关系的构造函数。

回答

2

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

我强烈建议您不要使用此功能,而是使用记录工具,它将负责为您注册和提供记录器/