代码之家  ›  专栏  ›  技术社区  ›  Serkan Hekimoglu

为什么我们不能在ASMX web服务中返回List<T>?

  •  4
  • Serkan Hekimoglu  · 技术社区  · 14 年前

    因为开发商知道我们不能退货 List<T> 使用web服务,我们只能返回列表并将其转换为.ToArray();我已经搜索了一些列表,但无法得到有关为什么不能使用web服务重新运行列表的有效答案。为什么我们必须把它们转换成数组?

    5 回复  |  直到 14 年前
        1
  •  9
  •   Joel Mueller    14 年前

    Web服务应该可以与多种语言进行互操作。几乎所有的语言都有数组,但是只有.NET有 List<T> 你在用的。

        2
  •  5
  •   John Saunders Tony    14 年前

    没有什么能阻止你回来 List<T> 从一个ASMX web服务。我不知道你为什么相信。

    可能让您困惑的是,XML模式(由WSDL使用)本身不能描述“列表”。实际上,它也不能描述数组。它可以描述一系列重复的元素。所有集合(包括数组)都作为重复元素集返回。

    在客户端,客户端无法知道服务器是否返回 列表<T> , T[] ,或 IEnumerable<T> 也没有理由在意。

        3
  •  2
  •   Stefan P.    14 年前

    它取决于webservice的互操作性设置,一个类似于 int[] 对于非.NET语言来说更容易理解 List<int> . 如果您在 周转基金 , List<T> 支持作为返回类型。

        4
  •  1
  •   Brent Dunham    14 年前

    web服务中描述的是一个“集合”。由客户决定使用哪种类型的“集合”。如果客户端的.Net在添加服务引用时,单击“高级”,则可以选择通用列表。

        5
  •  0
  •   kleopatra Aji kattacherry    11 年前

    据我所知,只要显式声明返回的是List(of T)方法标题,就可以返回对象;否则将收到序列化错误。

    例如

    <WebMethod()> _
    Public Function Search(ByVal SearchTerm As String) As List(Of 'object here')