2010-07-12 146 views
13

使用Windsor容器設置靜態屬性依賴關係需要什麼配置?將依賴關係注入靜態類

我現在有以下類,我希望Logger屬性被注入。

static class StuffDooer 
{ 
    static ILogger Logger { get; set; } 

    static StuffDooer() { Logger = NullLogger.Instance; } 
} 

這是我的配置,雖然這個設施似乎自動查找實例屬性沒有問題,但靜態版本沒有設置。

<facility id="logging" 
      type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging" 
      loggingApi="nlog" 
      customLoggerFactory="Castle.Services.Logging.NLogIntegration.NLogFactory" 
      configFile="Configuration/nlog.config" /> 

回答

26
StuffDooer.Logger = container.Resolve<ILoggerFactory>().GetLogger(typeof(StuffDoer)); 

如果你認爲這是醜陋的,這是正確的反應。靜力學和IoC不混合,與酒精和駕駛相同。

+0

大聲笑好的,我可能會反思我的班級設計 – 2010-07-13 10:33:45

+2

唯一的區別是,在大多數地方有一個最大允許的血液酒精水平,而駕駛(這裏是0.05%)。國際石油公司和靜力學有一個不容忍的方法。 – 2014-02-26 02:24:38