如何从子对象添加条目到父对象中定义的字典?
*的修订版 我编辑我的配置如下:
<object id="ParentType" singleton="false" type="SomeType">
<property name="FieldNameMap">
<dictionary key-type="string" value-type="string" >
<entry key="Title" value="TitleName"/>
</dictionary>
</property>
</object>
<object id="ChildType" singleton="false" type="SomeType" parent="ParentType">
<property name="FieldNameMap">
<dictionary merge="true">
<!-- this entry should be added to, not replace the whole Dictionary -->
<entry key="Position" value="PositionName"/>
</dictionary>
</property>
</object>
但不幸的是,它现在抛出强制转换异常:
无法转换类型的属性值 [System.Collections.Specialized.HybridDictionary]到必需的类型 [System.Collections.Generic.IDictionary`2 [[System.String, ],[System.String,mscorlib,Version = 4.0.0.0,Culture = neutral, 公钥= b77a5c561934e089]]
答案 0 :(得分:1)
我自己没有尝试过,但according to the docs,如果集合本身作为只读属性公开,spring.net将使用集合的Add
方法添加项目。
因此可以使用object definition inheritance来实现您描述的行为。配置将类似于:
<object id="ParentType" singleton="false" type="SomeType"
abstract="true">
<property name="FieldNameMap">
<dictionary>
<entry key="Title" value="TitleName"/>
</dictionary>
</property>
</object>
<object id="ChildType" singleton="false" type="SomeType"
parent="ParentType">
<property name="FieldNameMap">
<dictionary>
<!-- this entry should be added to, not replace the whole Dictionary -->
<entry key="Position" value="PositionName"/>
</dictionary>
</property>
</object>
仅当FieldNameMap
是只读属性时才会有效。