来自WCF的KeyValuePair - 通过ASP.Net消费时的转换错误

时间:2016-08-30 21:16:43

标签: c# asp.net wcf

我有一个返回KeyValuePair的WCF Web服务。即:

List<KeyVauePair<string,int>>

当我在WCF测试客户端中测试它时,它说返回的类型是:

System.Collections.Generic.KeyValuePair<System.Collections.Generic.KeyValuePair<System.String,System.Int32>>

这就是好事和花花公子。然后我通过以下方式在ASP.Net中使用这个Web方法:

List<KeyValuePair<string, int>> testkv = WCF.GetOptionSetValues("contact", "types");

但这不起作用,编译器说:

无法将System.Collections.Generic.KeyValuePair []类型隐式转换为System.Collections.Generic.List System.Collections.Generic.KeyValuePair

出于某种原因,似乎编译器认为Web方法的返回类型是:

System.Collections.Generic.KeyValuePair[]

但它不是一个数组。它是:

System.Collections.Generic.KeyValuePair

我想知道为什么编译器将Web方法解释为KeyValuePair []而不是KeyValuePair?

1 个答案:

答案 0 :(得分:1)

KeyValuePair的集合和KeyValuePair的列表不是一回事。如果你想要一个List,你可能需要遍历你的集合并构建一个。

foreach (KeyValuePair<string, int> pair in WCF.GetOptionSetValues("contact", "types"))
{
    myList.Add(pair);
}