2009-05-20 5 views
1

Innerhalb eines Web Service CarService,.Net-Liste auf einen SOAP-Array und zurück in einer .Net Liste

  • Ich habe eine Klasse namens Autos.
  • Auto hat eine Reihe von Eigenschaften, z. B. Car.Color.
  • CarService hat eine Methode namens GetCars().
  • Innerhalb von GetCar, habe ich eine Schleife, die eine Liste von hinzugefügt, Sie haben es erraten .. Autos.

    Dim carlist As New List (Of Car)

    Do While rdr.Read() Wenn rdr.GetValue (1) .ToString(). Länge> 0 Then Dim c Wie Car = New Car C.Color = rdr.GetValue (1) .ToString() carList.Add (c) End If Schleife

GetCars() gibt Carlist.
Ich habe auch eine andere Seite innerhalb eines anderen Projekts, die diese Daten verbraucht.
Oder zumindest, würde ich gern, und hier ist mein Problem ..

Wenn ich tue ..

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

ich:

Werte vom Typ ‚1-dimensionalen Array von Namespace .Car 'kann nicht in' System.Collections.Generic.List (Of Namespace.Car) 'konvertiert werden.

Was wäre der beste Weg, um dieses 1-dimensionale Array zurück in eine Liste von Autos zu konvertieren?

Antwort

4

ohne etwas zu ändern? Verwenden Sie den List<T> Konstruktor, IEnumerable<T> akzeptiert - so in C# (mein VB ist nicht gut):

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

Wenn Sie die Dinge ändern können; Betrachten Sie vielleicht Dinge wie die WCF-Verwendung, bei der Sie den Sammlungs-Typ (für alle Methoden) angeben können - den scvutil /collectionType: Switch. Das Wechseln zu einem WCF-Stack ist jedoch nicht trivial.

+0

Wenn Sie den/collectionType-Parameter verwenden, beachten Sie die funky generische Notation mit der schwarzen Anführungszeichen-Markierung. Z.B. Wenn Sie SVUCUTIL zwingen wollen, Listen Sammlungen zu verwenden, müssen Sie folgendes angeben: /ct:System.Collections.Generic.List'1 – Vizu

1

Mit .NET 3.5 (und .NET 4.0) Sie tun können:

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