我在種姓溫莎XML配置定義爲我的應用以下三個部分組成:幫助與溫莎城堡XML配置
<component id="StringFactory"
service="IStringFactory, MyApp"
type="DefaultStringFactory, MyApp"
lifestyle="singleton"
/>
<component id="TheString"
type="System.String"
factoryId="StringFactory"
factoryCreate="CreateString"
>
<parameters>
<name>SomeString</name>
</parameters>
</component>
<component id="TheTarget"
service="ITarget, MyApp"
type="TheTarget, MyApp"
lifestyle="transient"
>
<parameters>
<aString>${TheString}</aString>
</parameters>
</component>
及以下設備定義:
<facility id="factory.support"
type="Castle.Facilities.FactorySupport.FactorySupportFacility, Castle.MicroKernel"
/>
當我運行應用程序並在TheObject類的構造函數中設置一個斷點,當我希望它解析爲具有該名稱的組件的值時,傳遞的值爲aString參數爲「$ {TheString}」。
另外,我在StringFactory構造函數和CreateString方法中都有一個斷點,它們都沒有命中。我知道正在使用配置,因爲其他組件正在正確解析。
我在這裏失蹤或做錯了什麼?
UPDATE
在巨大tangient這個話題已經採取的光,我已經重構上面的代碼刪除任何與連接字符串。這篇文章的原意是關於用另一個對象的方法返回的值注入一個屬性。不知何故,這一點在關於爲什麼我使用XML與基於代碼的配置以及如果這是注入連接字符串的好方法的討論中丟失了。
上述方法與最初的想法並不相同,它是從其他幾個關於此主題的討論中拉出來的,我們的要求就是它們的要求。我希望幫助您理解配置的原因(無論正確的方法與否)未按預期工作。
我確實驗證了前兩個組件正在正確實例化。當我調用Container.Resolve(「TheString」)時,我得到了正確的值。無論出於何種原因,參數語法無法正常工作。
任何想法?
您是否因任何特定原因使用XML註冊? – 2010-11-23 18:40:33
解決方案要求。應用程序必須無需重新編譯即可重新配置。 – SonOfPirate 2010-11-23 18:46:38
您確定要配置像GetConnectionString或IConfigurationService,MyApp嗎?您可以在Windsor中混合使用代碼和XML配置。 – 2010-11-23 18:49:51