1

我有一个 WCF 服务,它应该返回一个字符串数组列表:

[OperationContract]
List<string[]> ArticleSearch(int SearchField, string SearchValueMin,
           string SearchValueMax, IEnumerable<string> Fields);

我知道我可以将列表的反序列化从System.Arrayto更改,System.Collections.Generic.List但这对我来说没用,因为我得到string[][](jagged array) 或List<List<string>>(List of List of string) 作为返回类型。我需要List<string[]>

我的问题是;是否可以在某处进行配置,或者我是否必须Reference.cs在每次更新后手动更改文件?

4

2 回答 2

5

通常集合类型作为数组返回,但您可以通过如下配置服务引用来更改此行为。

选择您的服务参考并转到配置服务参考...

在集合类型下拉列表中,选择类型System.Collections.Generic.List

在此处输入图像描述

由于您具有List<string[]>上述更改后的返回类型,因此您将收到List<List<string>>

所以你不能有 Array of List 或 List of Arrays 。

根据您的要求,您可以将数组转换为列表或列表转换为 Corak 评论的数组。

于 2013-09-05T06:14:44.367 回答
0

最终,您可以使用 List 属性创建一个 [DataContract] 类,并使您的 [OperationContract] 返回该对象。那时,当您将自己从任何 .NET 项目附加到 WCF 服务时,它将能够将该属性视为列表。

但是,如果只是在客户端接收 List,这确实不是一个好方法。@Corak 对您的帖子发表评论是最好的方法。不要忘记其他语言也可以读取您的服务,最后他们看到的只是 XML(或 json,如果您更改默认返回类型)。NET 只是将 XML 解释为“可加载”到已知对象中。

于 2013-09-05T12:18:04.050 回答