我正在尝试将一个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>
在'file [D:\ Workspace \ DataServices \ Main \ Source \ DataServices \ TestResults \ 2010-07-30 11_58_31 \ Out \ Spring.xml]'中定义名称为'DataLayer.DataServices.IDataService'的对象时出错:对象初始化失败:在对象'DataLayer.DataServices.IDataService'的属性'constructor argument'初始化期间,无法将托管列表元素'DataLayer.DataServices.IGetAccountMessage'从[System.String]转换为[DataLayer.DataServices.IGetAccount]。您是否注册了适当的类型转换器?
任何帮助表示赞赏。 thnx
答案 0 :(得分:1)
我认为如果您使用id
而不是name
指定对象,它应该有效(通常使用id更好)。 idref
element只能用于通过id引用对象。
如果对象DataLayer.DataServices.IDataService
以及对象DataLayer.DataServices.IGetAccountMessage
和DataLayer.DataServices.IGetAccountDatabase
属于同一个xml文件,您还可以使用local
idref
属性。然后,在解析xml文件时会出现错误,即使在解析依赖关系之前也是如此。