从Web服务c#中检索对象列表

时间:2012-04-25 00:37:31

标签: c# arrays web-services object types

我想从我的网络服务中检索一个对象列表,但我正在努力使用对象类型。

我有这段代码:

 [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 []

对于双方(客户端和Web服务),Car类是相同的。

我该怎么做才能解决这个问题?

谢谢你提前。

3 个答案:

答案 0 :(得分:3)

虽然他们可能,但这里涉及两个不同的Car类:

  1. ClientApp.model.Car - 这是隐藏在webservice后面的原始类。
  2. ClientApp.MyWebService.Car - 这是一个近似副本,是从SOAP WSDL创建的
  3. 该副本不会有任何私人成员,也不会包含任何属于原始汽车的方法。

    只需执行此操作即可检索汽车

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

    这将返回ClientApp.MyWebService.Car

    的数组

答案 1 :(得分:2)

如果两侧的汽车相同,那么就没有理由投出它,也没有理由在声明中使用类型。让编译器决定用于l ...

的类型
var l = cars.GetAllCars();

答案 2 :(得分:0)

它应该适合你:

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

        }

    }

例如在按钮事件中:

ieDriverServer.exe