Общий словарь, содержащий значения общего списка в Spring.Net - PullRequest
1 голос
/ 28 февраля 2011

У меня есть объект, который содержит свойство:

public Dictionary<string, List<Hotel>> CityHotels { get; set; }

Как использовать Spring.Net для настройки этого свойства?

Я пытался сделать это:

    <property name="CityHotels">
      <dictionary key-type="string" value-type="System.Collections.Generic.List&lt;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 , поэтому, если есть способчтобы сделать это, это решило бы мою проблему более чистым способом.

Ответы [ 2 ]

5 голосов
/ 01 марта 2011

Решение для конфигурации пружины:

<object id="HotelFinder" type="MyNameSpace.HotelFinder, MyAssembly">
  <property name="CityHotels">
    <dictionary key-type="string" value-type="System.Collections.Generic.List&lt;MyNameSpace.Hotel>, mscorlib">
      <entry key="London" value-ref="hotelsLondon" />
    </dictionary>
  </property>
</object>

<object id="hotelsLondon" type="System.Collections.Generic.List&lt;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" />

В типе значения словаря вам не нужно добавлять MyAssembly, но mscorlib для System.Collections.Generic.List.

Надеюсь, это вам поможет!

0 голосов
/ 01 марта 2011
...