【发布时间】:2010-08-01 03:23:24
【问题描述】:
我正在尝试将 IList 注入构造函数并想知道这是否可行,如果可以,有人可以启发我吗?它要求一个类型转换器的事实让我觉得我做不到。
我试过了……
<object name="DataLayer.DataServices.IGetAccountDatabase" type="DataServices.LinqToEntities.EntityDataModel, DataServices.LinqToEntities" singleton="false"></object>
<object name="DataLayer.DataServices.IGetAccountMessage" type="DataServices.VMX.VmxModel, DataServices.VMX" singleton="false"></object>
<object name="DataLayer.DataServices.IDataService" type="DataServices.NavigationModel, DataServices" singleton="false">
<constructor-arg>
<list element-type="DataLayer.DataServices.IGetAccount, DataLayer" >
<idref object="DataLayer.DataServices.IGetAccountMessage"/>
<idref object="DataLayer.DataServices.IGetAccountDatabase"/>
</list>
</constructor-arg>
</object>
在“文件 [D:\Workspace\DataServices\Main\Source\DataServices\TestResults\2010-07-30 11_58_31\Out\Spring.xml] 中定义的名称为“DataLayer.DataServices.IDataService”的对象创建时出错:对象初始化失败:在对象“DataLayer.DataServices.IDataService”的属性“构造函数参数”初始化期间,无法将托管列表元素“DataLayer.DataServices.IGetAccountMessage”从 [System.String] 转换为 [DataLayer.DataServices.IGetAccount]。您是否注册了合适的类型转换器?
任何帮助表示赞赏。谢谢
【问题讨论】:
-
您的 xml 配置的这一部分没有任何问题,所以这应该可以工作(而且绝对是可能的)。可能你在其他地方犯了错误。您可以为business.IGetAccount_A 和business.IGetAccount_B 添加xml 定义吗?这些对象是否都实现了接口business.IGetAccount?
-
您确定显示的错误消息与您从应用程序收到的错误消息完全相同吗?
-
我精简了所有内容(删除了更多的构造函数参数)并缩短了名称。将添加其余配置...
-
用一个简单的例子更新了问题。是的,两个对象都实现了 IGetAccount 接口
标签: spring.net