2012-04-25 34 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; 
      ... 

     } 

    }