1

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

ブラウザから Web サービスをテストすると、すべて問題ありません。それは私に何をすべきかを表示します。

しかし、クライアント側でやろうとすると

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

ClientApp.MyWebService.Car[] を ClientApp.model.Car[] に変換できないと表示されます

Car クラスは両側 (クライアントと Web サービス) で同じです。

この問題に取り組むにはどうすればよいですか?

よろしくお願いします。

4

3 に答える 3

3

それらは同じように見えるかもしれませんが、ここには2つの異なる車のクラスが含まれています。

  1. ClientApp.model.Car-これは元のクラスであり、Webサービスの背後に隠されています。
  2. ClientApp.MyWebService.Car-これは、SOAPWSDLから作成されたニアコピーです。

コピーには、プライベートメンバーも、元の車の一部であったメソッドも含まれません。

単にこれを実行して車を取得します

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

これにより、ClientApp.MyWebService.Carの配列が返されます

于 2012-04-25T03:58:25.227 に答える
2

車が両側で同じである場合、それをキャストする理由はなく、宣言で型を使用する理由もありません。コンパイラに、l..に使用するタイプを決定させます。

var l = cars.GetAllCars();
于 2012-04-25T02:28:33.073 に答える