返回列表<string []>而不是string [] [] </string []>

时间:2013-09-05 06:09:22

标签: c# wcf

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

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

我知道我可以将列表的反序列化从System.Array更改为System.Collections.Generic.List,但这对我来说没用,因为我得到string[][](锯齿状数组)或List<List<string>>(作为返回类型的字符串列表)。我需要List<string[]>

我的问题是;可以在某处配置它,还是每次更新后都必须手动更改Reference.cs文件?

2 个答案:

答案 0 :(得分:5)

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

选择您的服务参考,然后转到配置服务参考 ...

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

enter image description here

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

所以你不能在列表中使用数组列表或列表。

根据您的要求,您可以将数组转换为List或List to array,如Corak所述。

答案 1 :(得分:0)

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

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