2009-05-20 23 views
1

在Web服務CarService,淨列表到SOAP數組和回淨列表

  • 我有一個名爲汽車類。
  • 汽車有一堆屬性,即Car.Color。
  • CarService有一個名爲GetCars()的方法。
  • 在GetCar中,我有一個循環附加列表,你猜對了..汽車。

    昏暗卡洛斯作爲新的列表(汽車)

    的do while rdr.Read() 如果rdr.GetValue(1)的ToString()。長度> 0然後 尺寸C的CAR =新車 c.Color = rdr.GetValue(1)的ToString() carList.Add(c)中 結束如果 環路

GetCars()返回卡洛斯。
我也有另一個頁面在一個不同的項目中使用該數據。
或者至少,我想這是我的問題..

如果我做..

Dim myNewCars As List(Of Namespace.Car) 
myNewCars = CarServiceProxy.GetCars() 

我得到:

命名空間的類型「一維數組中的價值.Car'無法轉換爲'System.Collections.Generic.List(Of Namespace.Car)'。

將這個1維數組轉換回汽車列表的最佳方式是什麼?

回答

4

不改變什麼嗎?使用List<T>構造函數接受IEnumerable<T> - 所以在C#(我的VB是不是很大):

List<Car> myNewCars = new List<Car>(CarServiceProxy.GetCars()); 

如果你可以改變的事情;也許可以考慮WCF用法,您可以在其中指定所有方法的集合類型 - scvutil /collectionType:開關。不過,更改爲WCF堆棧並非微不足道。

+0

使用/ collectionType參數時,請注意帶有黑色引號的時髦通用符號。例如。如果你想強制svcutil使用List 集合,那麼你必須指定這個:/ct:System.Collections.Generic.List`1 – Vizu 2009-05-20 14:16:14

1

在.NET 3.5(和.NET 4.0),你可以這樣做:

Dim myNewCars As List(Of Namespace.Car) 
myNewCars = CarServiceProxy.GetCars().ToList()