为什么我们无法在ASMX Web服务中返回List ?

由于开发人员知道我们无法使用Web服务返回List ,因此我们只能将列表转换为.ToArray(); 我搜索了一些,但无法得到有效的答案为什么我们不能用网络服务重新列出List。 为什么我们必须将它们转换为ToArray(); ?

Web服务应该可以与许多语言互操作。 几乎所有语言都有数组,但只有.NET具有您正在使用的List的特定实现。

没有什么可以阻止您从ASMX Web服务返回List 。 我不知道你为什么这么认为。

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

在客户端,客户端无法知道服务器是否返回ListT[]IEnumerable ,也没有理由关心。

它取决于webservice的互操作性设置,对于非.NET语言而言,像int[]这样的对象比List更容易理解。 如果您在WCF下开发Web服务,则支持List作为返回类型。

Web服务中描述的是“集合”。 由客户决定使用何种类型的“集合”。 如果客户端的.Net,在添加服务引用时,单击“高级”,您将能够选择通用列表。

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

例如

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