我有一个返回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?
答案 0 :(得分:1)
KeyValuePair
的集合和KeyValuePair
的列表不是一回事。如果你想要一个List,你可能需要遍历你的集合并构建一个。
foreach (KeyValuePair<string, int> pair in WCF.GetOptionSetValues("contact", "types"))
{
myList.Add(pair);
}