2012-04-25 2 views
1

Я хотел бы получить список объектов из моей веб-службы, но я борюсь с типами объектов.получить список объектов из веб-службы 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(); // 
    } 

Когда я тестирование веб-службы из браузера, все в порядке. он показывает мне, что должно.

Но на стороне клиента, когда я пытаюсь сделать

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

он говорит не может преобразовать ClientApp.MyWebService.Car [] в ClientApp.model.Car []

класс автомобиля одно и то же для обеих сторон (клиент и веб-сервис).

Что мне делать для решения этой проблемы?

спасибо заранее.

+0

попробуйте его без преобразования, как этот автомобиль [] l = cars.GetAllCars(); –

+0

Это первое, что я пытался сделать без успеха. Спасибо – lemoos

ответ

2

Если автомобиль с обеих сторон одинаковый, тогда нет причин бросать его и нет причин использовать тип объявления. Пусть компилятор решить, какой тип использовать для л ...

var l = cars.GetAllCars(); 
3

В то время как они могут выглядеть же, есть два различных класса автомобилей, участвующих здесь:

  1. ClientApp.model.Car - Это оригинальный класс, скрытый за веб-сервисом.
  2. ClientApp.MyWebService.Car - Это почти копия, созданная из SOAP WSDL

копия не будет иметь каких-либо частных пользователей, ни каких-либо методов, которые были частью оригинального автомобиля.

Просто сделать это, чтобы получить автомобили, будучи

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

Это возвращает массив ClientApp.MyWebService.Car

+0

Спасибо за вашу помощь. Если я не могу вызвать какой-либо метод моего объекта, эта вещь веб-службы бесполезна. Если мне нужно вызвать ToString(), как мне продолжить? – lemoos

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

     } 

    }