Проблема 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

Другие вопросы по тегам