返回值的方法在silverlight中显示为void

时间:2009-04-13 14:54:17

标签: silverlight

我编写了一个webmethod,返回用户列表,虽然服务工作正常,但当我从页面调用webservice中的方法返回类型为void时。

1 个答案:

答案 0 :(得分:2)

您可能会被忽略的是,Silverlight中的Web服务调用必须异步处理。

当您定义WebMethod时,例如,您在名为WorkMan的类上有一个名为DoWork的。您在Silverlight中的代码最终会如下所示:

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

然后调用实际方法并允许回调处理结果。

client.DoWorkAsync();

如果您的webmethod返回一个值,您的EventArg对象将具有您可以用于结果的Result属性。

最后一点:个人风格的东西,但我喜欢lambda表达式,而不是为回调生成一个全新的方法。我可能会写以下内容:

WorkManSoapClient client = new WorkManSoapClient();
client.DoWorkCompleted += (s,e) => {
    if(e.Result != null){
        object foo = e.Result;
    }
};
client.DoWorkAsync();