Фон
Я создал веб-сервис в Visual Studio и пытаюсь использовать его, используя автоматически сгенерированный прокси-класс. Веб-служба возвращает реализованный мной класс, содержащий список.
Вопрос
Прокси-класс автоматически генерирует методы для отправки SOAP в веб-службу. Он использует метод Invoke () для выполнения вызова, а затем преобразует результат в DataSet. Как я могу вернуть этот объект в класс, который я знаю?
Я знаю, что могу вручную редактировать автоматически сгенерированный файл, но это не очень удобно для обслуживания, поэтому я не хочу идти по этому пути (каждый раз, когда веб-служба перестраивается, изменения должны быть внесены опять же).
Есть ли способ сказать сгенерированному классу, чтобы он был более конкретным и действительно использовал правильный тип данных? Или мне нужно написать неуклюжий набор десериализаторов, чтобы вернуть мои данные в правильную форму?
Пример
Один метод в моем классе веб-службы:
[WebMethod]
public UpdateList RetrieveUpdates(long sessionID, string configurationVersion, string coreVersion, string researcherDBVersion)
{ ... }
При добавлении класса в качестве веб-ссылки создается следующий прокси-метод:
public DataSet RetrieveUpdates(long sessionID, string configurationVersion, string coreVersion, string researcherDBVersion) {
object[] results = this.Invoke("RetrieveUpdates", new object[] {
sessionID,
configurationVersion,
coreVersion,
researcherDBVersion});
return ((DataSet)(results[0]));
}
DataSet, который я получаю от этого метода, всегда пуст (потому что вы не можете привести из моего класса в DataSet).
Заранее спасибо