Проблема Spring.NET с тегом <idref> в конфигурации
В соответствии с файлом справки, который поставляется с платформой Spring.NET, вы можете внедрить зависимость, определенную в локальном файле, используя тег 'idref' вместе с атрибутом 'local'.
Я пытался сделать это безуспешно и надеялся, что у кого-то есть опыт, чтобы помочь мне.
Ниже у меня есть фрагмент из конфигурации, где я передаю его в качестве аргумента конструктора, но я также попытался установить его как свойство. Оба метода, похоже, дают одинаковую ошибку.
<object id="theTargetObject" type="TestClassLibrary.TargetObject, TestClassLibrary"/>
<object id="theClientObject" type="TestClassLibrary.ClientObject, TestClassLibrary">
<constructor-arg name="myClass">
<idref local="theTargetObject"/>
</constructor-arg>
</object>
Ошибка создания контекста "spring.root": Ошибка создания объекта с именем "theClientObject", определенным в "файле [C:\Test\TestApp\bin\Debug\my.config.xml]": неудовлетворенная зависимость, выраженная через аргумент конструктора с индексом 0 типа [TestClassLibrary.TargetObject]: не удалось преобразовать значение аргумента конструктора [theTargetObject] в требуемый тип [TestClassLibrary.TargetObject]: невозможно преобразовать значение свойства типа [System.String] в требуемый тип [TestClassLibrary.TargetObject] для свойства ''.
2 ответа
Я думаю, что gef был на правильном пути, но случайно перепутал его при вставке фрагмента. Вы ищете элемент;:
<object id="theTargetObject" type="TestClassLibrary.TargetObject, TestClassLibrary"/>
<object id="theClientObject" type="TestClassLibrary.ClientObject, TestClassLibrary">
<property name="myClass">
<ref local="theTargetObject"/>
</property>
сокращенное обозначение этого:
<object id="theClientObject" type="TestClassLibrary.ClientObject, TestClassLibrary">
<property name="myClass ref="theTargetObject"/>
Эх, Эрих
Пожалуйста, просмотрите сообщение http://forum.springsource.org/showthread.php?t=14211