Мой первоначальный ответ был принят, но теперь я считаю, что лучшим ответом будет:
Ваше выражение не является правильным, оно должно быть:
<object name="obj1" type="MyTestClass" depends-on="Paths">
<property name="cfg" expression="@(Paths)['cfgFile']"/>
</object>
Вы можете использовать @(object-id-here)
expression syntax to retrieve an object from the Spring context using an expression.
Edit - ниже ответ, который был принят
Я могу себе представить, что вы хотели бы такой конфигурации должны быть доступны в вашем app.config
. Если это так, вы можете использовать PropertyPlaceholderConfigurer
; см. пример в section 5.9.2.1.
В вашем случае, это будет выглядеть примерно так:
<!-- app.config -->
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
</sectionGroup>
<section name="PathConfiguration" type="System.Configuration.NameValueSectionHandler"/>
</configSections>
<PathConfiguration>
<add key="cfgFile" value="config.txt"/>
<add key="otherCfgFile" value="otherconfig.txt"/>
</PathConfiguration>
<spring>
<context>
<resource uri="mycongfig.xml"/>
</context>
</spring>
</configuration>
И ваш myconfig.xml
содержит:
<!-- ... -->
<object name="obj1" type="MyTestClass">
<property name="cfg" value="${cfgFile}"/>
</object>
<object name="appConfigPropertyHolder"
type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
<property name="configSections">
<value>PathConfiguration</value>
</property>
</object>
<!-- ... -->
Обратите внимание, что вместо app.config
, вы можете использовать любой другой IResource
.
Альтернативным решением является определение cfgFile
как объект в вашей конфигурации, а затем в своем словаре ссылкой этот объект с помощью value-ref
(см пружинные DOCS 5.3.2.4 о том, как это сделать). Но это (возможно) не то, что вы ищете, так как вы вводите примитивные значения (так что это не стоит усилий для создания явного ConfigurationObject
).
Не могли бы вы сообщить подробности о своем сообщении об ошибке? – Marijn