2012-04-25 35 views
1

我想從我的Web服務中檢索對象列表,但我正在努力使用對象類型。從Web服務中檢索對象列表c#

我有這樣的代碼:

[WebMethod] 
    public Car[] GetAllCars() 
    { 

     List<Car> cars = new List<Car>(); 
     cars.Add(new Car ("fiat", 1999); 
     cars.Add("opel" ,2007); 
     cars.Add("chevrolet",2007); 
     return cars.ToArray(); // 
    } 

當我從我的瀏覽器,一切都很好測試Web服務。它顯示我應該做什麼。

但在客戶端,當我嘗試做

MyWebService.WebService1SoapClient cars = new MyWebService.WebService1SoapClient(); 
     Car[] l = (Car[]) cars.GetAllCars(); 

它說不能轉換ClientApp.MyWebService.Car []進入ClientApp.model.Car []

Car類是相同的爲雙方(客戶和網絡服務)。

我該怎麼做才能解決這個問題?

謝謝你的提前。

+0

嘗試它沒有像這樣轉換Car [] l = cars.GetAllCars(); – 2012-04-25 01:16:54

+0

這是我試圖做的第一件事,沒有成功。謝謝 – lemoos 2012-04-26 00:11:09

回答

2

如果汽車在兩側是相同的,那麼沒有理由將其轉換,並且沒有理由在聲明中使用某種類型。讓編譯器決定使用什麼類型的1 ...

var l = cars.GetAllCars(); 
3

雖然他們可能看起來一樣,這裏涉及到兩個不同的汽車類:

  1. ClientApp.model.Car - 這是隱藏在web服務背後的原始類。
  2. ClientApp.MyWebService.Car - 這是近複製,從SOAP WSDL

副本將不會有任何私有成員,也沒有任何方法,那名原車的一部分創建。

只要做到這一點檢索汽車,是

var carsWebservice = new MyWebService.WebService1SoapClient(); 
var cars = carsWebservice.GetAllCars(); 

這將返回的ClientApp.MyWebService.Car

+0

謝謝你的幫助。如果我不能調用我的對象的任何方法,這個Web服務的東西是沒用的。如果我需要調用ToString(),我應該如何繼續嗎?謝謝 – lemoos 2012-04-26 00:17:20

0

數組應該爲你工作:

MyWebService.WebService1SoapClient _cars = new MyWebService.WebService1SoapClient(); 

public List<Car> Cars; 

而且在按鈕事件例如:

private void button_valider_Click(object sender, EventArgs e) 
    { 
     SqlCeConnection connexion =Connexion.getInstance().OpenConnection(); 
     Cars= new List<Car>(); 
     Cars= _cars .GetAllCars().ToList(); 

     foreach (var car in Cars) 
     { 
      int year= car.year; 
      ... 

     } 

    }