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