2011-09-02 79 views
0

我想不出如何將構件屬性傳遞給構造函數參數。.net Castle Windsor如何在xml中指定組件屬性爲構造函數參數?

<component id="NotificationCenterManager" 
        service="Advise.Notification.INotificationCenterManager, Xsquare" 
        type="Advise.Notification.NotificationCenterManager, Xsquare">   
</component>  
<component id="JobProcessorConfigurationSender" 
       service="Advise.Core.JobProcessor.IJobProcessorConfigurationSender, Advise.Core" 
       type="Advise.JobProcessorManagement.JobProcessorConfigurationSender, Xsquare"> 
     <parameters> 
      <notificationCenterUri>${NotificationCenterManager.NotificationCenterUri} 
</notificationCenterUri> 
     </parameters> 
</component> 

其中NotificationCenterUri是接口INotificationCenterManager的屬性。 目前$ {NotificationCenterManager.NotificationCenterUri}被視爲文字...

任何想法?

謝謝

回答

0

溫莎不提供開箱即用。你必須寫一個facility來實現它。不過,我不會推薦它:通過這樣做,您隱式地使JobProcessorConfigurationSender依賴於NotificationCenterManager(隱式地,因爲它不在JobProcessorConfigurationSender的源代碼中的任何位置)。

請改爲將此URI作爲property,然後將其引用到NotificationCenterManager和JobProcessorConfigurationSender的組件配置中。

+0

感謝您的回答! 問題是URI是動態的並且取決於機器名稱。 你有什麼建議嗎? 謝謝 –

+0

@ Pierre-Louis:如果你必須用XML做這件事,你可以創建一個提供這些信息的IUriProvider服務,然後在NotificationCenterManager和JobProcessorConfigurationSender中使用該服務 –

+0

@ Pierre-Louis:另一個選擇是編寫一個ISubDependencyResolver或一個IContributeComponentModelConstruction –

相關問題