我在种姓温莎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