从 Web 服务 C# 检索对象列表
本文关键字:对象 列表 检索 Web 服务 | 更新日期: 2023-09-27 18:32:13
我想从我的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 服务)是相同的。
我应该怎么做才能解决这个问题?
谢谢你提前.
虽然它们看起来可能相同,但这里涉及两个不同的 Car 类:
- ClientApp.model.Car - 这是原始类,隐藏在 Web 服务后面。
- ClientApp.MyWebService.Car - 这是一个近似副本,从 SOAP WSDL 创建
该副本将没有任何私人成员,也没有任何原始汽车的一部分的方法。
只需这样做即可取回汽车,即
var carsWebservice = new MyWebService.WebService1SoapClient();
var cars = carsWebservice.GetAllCars();
这将返回一个 ClientApp.MyWebService.Car 的数组。
如果 Car 在两边相同,则没有理由铸造它,也没有理由在声明中使用类型。 让编译器决定使用哪种类型...
var l = cars.GetAllCars();
它应该适合你:
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;
...
}
}