【发布时间】:2014-09-03 19:58:26
【问题描述】:
在 XML 配置中使用 Spring.NET 表达式语言设置字典条目值时遇到问题。我有一个 PreferencesManager 类,它有一个我想通过 XML 配置的 Dictionary<string, string> 属性。 Dictionary 中的条目之一是表示当前域的基本目录的字符串。我的 PreferencesManager 类公开了这个公共属性:
(注意,我使用的是私有 setter,因为 Spring.NET 支持私有 setter 注入并且我想保持私有可访问性)
public static Dictionary<string, string> DefaultPreferences
{
get { return p_DefaultPreferences; }
private set
{
p_DefaultPreferences = value;
}
}
我对这个类的 XML 配置如下所示:
<object id="PreferencesManager" type="TestProj.PreferencesManager, TestProj">
<property name="DefaultPreferences">
<dictionary key-type="string" value-type="string">
<entry key="DefaultWordListLocation"
expression="AppDomain.CurrentDomain.BaseDirectory" />
</dictionary>
</property>
</object>
我的问题是,当容器初始化这个对象时,它会抛出一个 ConfigurationErrorsException:Error creating context 'spring.root': Cannot initialize property or field node 'AppDomain' because the specified context is null.
我已经阅读了http://www.springframework.net/doc-latest/reference/html/expressions.html 上有关 Spring.NET 表达式语言的文档(这在 XML 配置中的 SpEL 示例中非常缺乏),但我想我一定遗漏了一些东西。 MSDN 告诉我 AppDomain 类位于 mscorlib.dll 程序集中,因此我不必向 Spring.NET TypeRegistry 注册该类型。
我不相信这是因为字典是静态的,因为我在使用字符串文字配置其他条目时没有问题。
我在这里忽略了什么?提前致谢!
【问题讨论】:
标签: c# .net spring.net spring-el