У меня есть пара вопросов, касающихся веб-сервисов, и я был бы очень признателен, если бы кто-то указал мне правильное направление.
В моей библиотеке классов у меня есть два класса: Hotel & RoomType.
Класс отеля содержит ArrayList объектов RoomType.
В моем веб-сервисе у меня есть метод GetHotels следующим образом:
[WebMethod]
[XmlInclude(typeof(Hotel))]
[XmlInclude(typeof(RoomType))]
public ArrayList GetHotels()
{
return Sistema.GetInstance().GetHotels();
}
GetHotels () в классе Система, извлекает информацию из базы данных и возвращает ArrayList.
Мне пришлось использовать XMLInclude, потому что я получал:
Тип Hotel (или RoomType) не ожидался. Используйте атрибут XmlInclude или SoapInclude, чтобы указать типы, которые статически не известны
Тогда в моем веб-приложении у меня есть этот код:
WebService sample = new Service();
ArrayList hotels = service.GetHotels();
Это не компилируется, поэтому мне пришлось перейти на следующий код:
WebService sample = new Service();
object[] hotels = service.GetHotels();
Вот мой первый вопрос: Можно ли вернуть ArrayList или каждый раз, когда мне придется приводить результат к ArrayList?
Зная, что ArrayList содержит объекты Hotel, я добавил следующий код:
foreach (Hotel hotel in hotels)
{
...
}
Это компилируется, но когда я выполняю, я получаю следующую ошибку:
Невозможно привести объект типа 'System.Xml.XmlNode []' к типу "Отель".
Итак, мой следующий вопрос: Как я могу привести результат к объекту отеля и работать с ним?