【问题标题】:Spring.NET how to set value of dictionary entry using SpELSpring.NET如何使用SpEL设置字典条目的值
【发布时间】: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


    【解决方案1】:

    尝试更改您的 SpEL 表达式,例如:

    <object id="PreferencesManager" type="TestProj.PreferencesManager, TestProj">
      <property name="DefaultPreferences">
        <dictionary key-type="string" value-type="string">
            <entry key="DefaultWordListLocation" 
                   expression="T(System.AppDomain).CurrentDomain.BaseDirectory" />
        </dictionary>
      </property>
    </object>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      相关资源
      最近更新 更多