2012-04-25 11 views
1

Webサービスからオブジェクトのリストを取得したいのですが、オブジェクト型に苦しんでいます。Webサービスからオブジェクトのリストを取得するC#

私はこのコードを持っている:私は私のブラウザは、すべての罰金からWebサービスをテストする場合

[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(); // 
    } 

を。それは私に何がすべきかを表示する。

しかし、クライアント側では、私が

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

を実行しようとするとき、それは車のクラスが同じである[] ClientApp.model.CarにClientApp.MyWebService.Carは[]

を変換することができないと言います(クライアントとWebサービス)。

この問題を解決するにはどうすればよいですか?

ありがとうございます。

+0

このように変換せずにそれを試してください。Car [] l = cars.GetAllCars(); –

+0

これは、私が成功なしでしようとした最初のことです。ありがとう – lemoos

答えて

2

車が両側で同じ場合、それをキャストする理由はなく、宣言にタイプを使用する理由はありません。ここに関与する2つの異なる車のクラスがあり、

var l = cars.GetAllCars(); 
3

は、彼らが同じように見えるかもしれないが...コンパイラがLの場合に使用するタイプを決定してみましょう:

  1. ClientApp.model.Carは - これは元のクラスで、Webサービスの背後に隠れています。
  2. ClientApp.MyWebService.Car - これはコピーは任意のプライベートメンバー、また元の車の一部であった任意のメソッドを持っていません

SOAPのWSDLから作成され、近くにコピーです。

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

public List<Car> Cars; 

とIn:

単にこれは、それはあなたのために働く必要がありますClientApp.MyWebService.Car

+0

あなたの助けをありがとう。あなたのオブジェクトのメソッドを呼び出せない場合、このWebサービスのものは役に立たない。続行しますか?ありがとう – lemoos

0

の配列を返します

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

であること、車を取得するために、これを行います例えば、ボタンイベント:

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; 
      ... 

     } 

    } 
関連する問題