如何调用从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);
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();