为什么我们不能在ASMX Web服务中返回List <t>?</t>

时间:2010-11-22 18:42:48

标签: c# web-services list generics asmx

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

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:5)

没有任何东西阻止您从ASMX Web服务返回List<T>。我不知道你为什么这么认为。

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

在客户端,客户端无法知道服务器是返回List<T>T[]还是IEnumerable<T>,也没有理由关心。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

e.g

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