有一个 WCF 服务:
public List<Aktivy> Aktivy()
{
DataClassesDataContext db = new DataClassesDataContext();
var aktivy = from akt in db.Aktivys
select aktivy;
return aktivy.ToList();
}
还有一个访问WCF服务的Silverlight客户端:
private void Grid_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
ServiceReference.ServiceClient webService = new ServiceReference.ServiceClient();
webService.AktivyCompleted += new EventHandler<ServiceReference.AktivyCompletedEventArgs>(webService_AktivyCompleted);
webService.AktivyAsync();
}
void webService_AktivyCompleted(object sender, ServiceReference.AktivyCompletedEventArgs e)
{
}
如何在 List<Aktivy>
中转换 e.Result(具有 webService_AktivyCompleted 功能)在客户端?
最佳答案
默认情况下,当您在 Silverlight 中配置服务引用时,集合类型被设置为反序列化为 ObservableCollection<T>
(这不是 List<T>
)。如果你总是想要一个简单的 List<T>
您可以修改服务引用的配置(在解决方案资源管理器中用鼠标右键单击服务)并将集合设置为表示为 List<T>
.
然而,处理这些事情的更好方法是使用接口(interface)而不是要求特定类型。修改您的代码以使用 IList<T>
(一个 ObservableCollection<T>
实现了 IList<T>
)而不是 List<T>
,这将适用于服务可能配置的任何可能的集合类型。
自 ObservableCollection<T>
是可用选项中最通用的选项,您必须有充分的理由说明集合必须 是List<T>
.一个原因可能是因为您在服务器和客户端之间共享代码。
关于.net - 如何将 e.Result(由 WCF 服务返回)转换为列表 <>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315167/