【问题标题】:retrieve a List of objects from a web service c#从 Web 服务 c# 检索对象列表
【发布时间】:2012-05-05 16:17:52
【问题描述】:

我想从我的 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.MyWebService.Car[] 转换为 ClientApp.model.Car[]

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

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

谢谢你。

【问题讨论】:

  • 尝试它而不像这样转换 Car[] l =cars.GetAllCars();
  • 这是我尝试做的第一件事,但没有成功。谢谢

标签: c# arrays web-services object types


【解决方案1】:

它应该适合你:

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

        }

    }

【讨论】:

    【解决方案2】:

    虽然它们可能看起来相同,但这里涉及两个不同的 Car 类:

    1. ClientApp.model.Car - 这是原始类,隐藏在 Web 服务后面。
    2. ClientApp.MyWebService.Car - 这是一个近似副本,从 SOAP WSDL 创建

    副本不会包含任何私有成员,也不会包含原始 Car 的任何方法。

    只需这样做来取回汽车,

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

    这将返回一个 ClientApp.MyWebService.Car 数组

    【讨论】:

    • 谢谢你的帮助。如果我不能调用我的对象的任何方法,这个Web服务的东西是没用的。如果我需要调用 ToString() ,我应该如何进行?谢谢
    【解决方案3】:

    如果 Car 在两边都相同,则没有理由强制转换它,也没有理由在声明中使用类型。让编译器决定 l 使用什么类型...

    var l = cars.GetAllCars();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      相关资源
      最近更新 更多