我有一个包含属性的对象:
public Dictionary<string, List<Hotel>> CityHotels { get; set; }
如何使用Spring.Net配置此属性?
我试过这样做:
<property name="CityHotels">
<dictionary key-type="string" value-type="System.Collections.Generic.List<MyNameSpace.Hotel, MyAssembly>" >
<entry key="SYD">
<list element-type="MyNameSpace.Hotel, MyAssembly">
</list>
</entry>
</dictionary>
</property>
但是没有成功:
创建上下文'spring.root'时出错:无法从字符串值'System.Collections.Generic.List`2'加载类型。
我做错了什么?
在我尝试使用Spring.Net设置类型ILookup的属性失败后,出现了这个令人费解的混乱,所以如果有办法做到这一点,那将以更清洁的方式解决我的问题。 / p>
答案 0 :(得分:5)
spring config的解决方案:
<object id="HotelFinder" type="MyNameSpace.HotelFinder, MyAssembly">
<property name="CityHotels">
<dictionary key-type="string" value-type="System.Collections.Generic.List<MyNameSpace.Hotel>, mscorlib">
<entry key="London" value-ref="hotelsLondon" />
</dictionary>
</property>
</object>
<object id="hotelsLondon" type="System.Collections.Generic.List<MyNameSpace.Hotel>, mscorlib">
<constructor-arg>
<list element-type="MyNameSpace.Hotel, MyAssembly">
<ref object="hotelLonden1"/>
<ref object="hotelLonden2"/>
<ref object="hotelLonden3"/>
<ref object="hotelLonden4"/>
</list>
</constructor-arg>
</object>
<object id="hotelLonden1" type="MyNameSpace.Hotel, MyAssembly" />
<object id="hotelLonden2" type="MyNameSpace.Hotel, MyAssembly" />
<object id="hotelLonden3" type="MyNameSpace.Hotel, MyAssembly" />
<object id="hotelLonden4" type="MyNameSpace.Hotel, MyAssembly" />
在字典的value-type中,您不需要为System.Collections.Generic.List
添加MyAssembly而是mscorlib。
我希望这会对你有所帮助!
答案 1 :(得分:0)