У меня возникла проблема с установкой значения словарной статьи с использованием языка выражений Spring.NET в конфигурации XML. У меня есть класс PreferencesManager, у которого есть свойство Dictionary<string, string>
, которое я хочу настроить через XML. Одна из записей в словаре - это строка, представляющая базовый каталог текущего домена. Мой класс PreferencesManager предоставляет это общедоступное свойство:
(Обратите внимание, я использую частный сеттер, потому что Spring.NET поддерживает инъекцию частного сеттера, и я хочу сохранить частную доступность)
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.
Я прочитал документацию по языку выражений Spring.NET по адресу http://www.springframework.net/doc-latest/reference/html/expressions.html (которого, к сожалению, не хватает в примерах SpEL в конфигурации XML), но я думаю, что мне что-то не хватает. MSDN сообщает мне, что класс AppDomain находится в сборке mscorlib.dll, поэтому мне не нужно регистрировать тип в Spring.NET TypeRegistry.
Я не верю, потому что Словарь статичен, потому что у меня нет проблем с настройкой других записей со строковыми литералами.
Я что-то здесь не замечаю? Заранее спасибо!