2010-07-20 19 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

很可能是因爲記錄器還沒有準備好(它正在等待自己的依賴關係被提供)。

我強烈建議您不要使用此功能,而是使用記錄工具,它將負責爲您註冊和提供記錄器/