如何调用从Silverlight返回自定义对象的WCF方法

本文关键字:自定义 返回 对象 方法 WCF Silverlight 何调用 调用 | 更新日期: 2023-09-27 18:15:50

我的silverlight应用程序正在连接到以下合同的WCF webservice方法。我能够使用wcftestclient.exe正确检索List<>

[OperationContract]
List<CustomClass> GetCustomObjectsById(int uid);

然而,我不确定如何从我的silverlight客户端调用此。

ServiceReference1.Service1Client sc = new Service1Client();
sc.GetCustomObjectsByIdCompleted += new EventHandler<GetCustomObjectsByIdCompletedEventArgs>(sc_GetCustomObjectsByIdCompleted);
..
void sc_GetCustomObjectsByIdCompleted(object sender, GetCustomObjectsByIdCompletedEventArgs e)
{
      List<CustomClass> ac = (List<CustomClass>)e.Result[0]; //How to access here
}

编辑:我像这样调用服务:

sc.GetCustomObjectsByIdAsync(3);

如何调用从Silverlight返回自定义对象的WCF方法

Result属性是合同的返回值。在这种情况下,您应该能够使用:

  List<CustomClass> ac = e.Result;

这也要求你的服务引用被配置为返回集合作为List<T>而不是使用Array -详细信息,请参考配置服务引用对话框帮助。(WCF客户端可以使用与服务返回的集合类型不同的集合类型,因为当类型在客户端被反序列化时,它们会被"重构"……默认情况下,所有返回集合的方法都将返回一个数组或Dictionary<T,U>,除非您选择将它们配置为其他方式。

注意,您还需要在调用sc.GetCustomObjectsByIdAsync();

订阅完成事件之后的某个时间启动操作。

您可以通过调用方法

来发起WCF服务调用
sc.GetCustomObjectsByIdCompleted += new EventHandler<GetCustomObjectsByIdCompletedEventArgs>(sc_GetCustomObjectsByIdCompleted);
//call the WCF Service method Asynchronously and once the call is complete
// sc_GetCustomObjectsByIdCompleted method will be called with results
sc.GetCustomObjectsByIdAsync();