配置</idref>中的<idref>标记的Spring.NET问题

时间:2008-11-06 18:49:56

标签: spring.net local 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'时出错:创建在'file [C:\ Test \ TestApp \ bin \ Debug \ my.config.xml]中定义名称为'theClientObject'的对象时出错:通过构造函数参数表示不满意的依赖关系索引0的类型为[TestClassLibrary.TargetObject]:无法将构造函数参数值[theTargetObject]转换为必需的类型[TestClassLibrary.TargetObject]:无法将类型[System.String]的属性值转换为属性所需的类型[TestClassLibrary.TargetObject] ''。

2 个答案:

答案 0 :(得分:2)

我猜gef是在正确的方式,但在粘贴片段时意外混淆了。你正在寻找<ref> element

<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"/>

HTH, 埃里希

答案 1 :(得分:1)