возвращаемое значение метода отображается как пустое в Silverlight - PullRequest
1 голос
/ 13 апреля 2009

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

1 Ответ

2 голосов
/ 13 апреля 2009

Что может вас удивить, так это то, что вызовы веб-служб в Silverlight должны обрабатываться асинхронно.

Когда вы определяете WebMethod, скажем, например, у вас есть один с именем DoWork в классе с именем WorkMan. Ваш код в Silverlight будет выглядеть так:

WorkManSoapClient client = new WorkManSoapClient();
client.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(this.DoWorkCompleteHandler); // where DoWorkCompletedHandler handles the callback.

Затем вы вызываете ваш фактический метод и позволяете обратному вызову обработать результат.

client.DoWorkAsync();

Если ваш веб-метод возвращает значение, ваш объект EventArg будет иметь свойство Result, которое вы можете использовать для получения результата.

Последнее замечание: личная стилистическая вещь, но мне нравятся лямбда-выражения, а не генерация совершенно нового метода для обратного вызова. Я мог бы написать что-то вроде следующего:

WorkManSoapClient client = new WorkManSoapClient();
client.DoWorkCompleted += (s,e) => {
    if(e.Result != null){
        object foo = e.Result;
    }
};
client.DoWorkAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...