gpt4 book ai didi

c# - Spring.Net 引用字典项

转载 作者:行者123 更新时间:2023-11-30 17:19:50 25 4
gpt4 key购买 nike

我无法找到如何在 spring xml 文件的其他位置使用字典(xml spring config)中定义的项目。我试过这样的事情,但我在“obj1”的初始化中遇到错误。

  <object name="Paths" id="Paths" type="System.Collections.Generic.Dictionary&lt;string,string&gt;">
<constructor-arg>
<dictionary key-type="string" value-type="string">
<entry key="cfgFile">
<value>config.txt</value>
</entry>
</dictionary>
</constructor-arg>
</object>
<object name="obj1" type="MyTestClass" depends-on="Paths">
<property name="cfg" expression="${Paths['cfgFile']}"/>
</object>

感谢您的帮助...

最佳答案

我原来的答案被接受了,但现在我相信更好的答案是:

你的表述不正确,应该是:

<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 .

编辑 - 以下是已接受的答案

我可以想象您希望在您的 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>
<!-- ... -->

请注意,您可以使用任何其他 IResource 而不是 app.config

另一种解决方案是将 cfgFile 定义为配置中的对象,然后在字典中使用 value-ref 引用该对象(参见 spring 文档 5.3.2.4关于如何做到这一点)。但这(可能)不是您想要的,因为您正在注入(inject)原始值(因此不值得创建显式 ConfigurationObject)。

关于c# - Spring.Net 引用字典项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4591638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com