我有一个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
文件?
答案 0 :(得分:5)
通常,集合类型以数组形式返回,但您可以通过配置服务引用来更改此行为,如下所示。
选择您的服务参考,然后转到配置服务参考 ...
在“收集类型”下拉列表中,选择类型System.Collections.Generic.List
由于您在上述更改后返回类型为List<string[]>
,因此您将收到List<List<string>>
所以你不能在列表中使用数组列表或列表。
根据您的要求,您可以将数组转换为List或List to array,如Corak所述。
答案 1 :(得分:0)
最终,您可以使用List属性创建[DataContract]类,并使[OperationContract]返回该对象。此时,当您从任何.NET项目将自己附加到WCF服务时,它将能够将该属性视为List。
但如果只是在客户端接收List,这实际上并不是一个好方法。 @Corak评论你的帖子是最好的方法。不要忘记其他语言也可以读取您的服务,最后他们看到的只是XML(如果您更改默认返回类型,则为json).NET只是将XML解释为“可加载”到已知对象中。