.net - 如何将 e.Result(由 WCF 服务返回)转换为列表 <>?

标签 .net asp.net silverlight wcf web-services

有一个 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/

相关文章:

asp.net - 设计决策 - Javascript 数组或 http 处理程序

c# - 如何隐藏 .NET 可执行文件中的详细信息?

c# - 使 C# 程序集属性详细显示

asp.net - HTML 输入 + 迄今为止的格式化值

asp.net - 如何在 Azure 中编辑网站应用程序设置

javascript - 从 iframe 中的 silverlight 应用程序获取父页面 url

c# - WP7 上的 JSON 序列化性能问题

Silverlight 与 MVVM 继承 : ModelView and View matching the Model

c# - 针对多个版本的程序集 System.Net.Http 生成的 native 图像

c# - 停止时同步 Timers.Timer elapsed 方法