无法将'object [] []'类型转换为'System.Collections.Generic.List <object>'</object>

时间:2012-09-17 19:14:08

标签: c# asp.net web-services list ienumerable

我正在尝试创建和使用Web服务......我正在使用.NET Framework 4.0(c#)。 该服务公开了这样的方法:

  public List<object[]> GetData(string strRegion, List<string> lstBrand, List<string> lstColor)

然后在客户端应用程序上,我声明了一个对象列表:

  List<object[]> lst = new List<object[]>();

...并试图像这样填写:

  MyService.MyClient os = new MyClient();
  lst = os.GetData(myRegionString, myBrandList, myColorList);

...但我明白了,“不能将类型'object [] []'转换为'System.Collections.Generic.List'”。我做错了什么?

谢谢!

4 个答案:

答案 0 :(得分:3)

在解决方案资源管理器中,右键单击您的服务并进行配置。您可能已将数据集合的默认类型设置为数组。您可以将其设置为列表类型。另外,我会重新考虑通过Web服务发送object。您通常需要定义良好的数据类型。我认为你甚至不能通过网络服务发送object类型。

答案 1 :(得分:2)

尝试

MyService.MyClient os = new MyClient();
  lst = os.GetData(myRegionString, myBrandList, myColorList).ToList();

列表将在从Web服务传递到客户端时序列化为数组,因此您需要再次将其转换回列表。

答案 2 :(得分:0)

MyClient.GetData()方法返回一个锯齿状数组。要将此数组转换为列表,您应该能够使用System.Linq命名空间中的ToList()方法:

lst = os.GetData(myRegionString, myBrandList, myColorList).ToList();

答案 3 :(得分:0)

显然你返回一个锯齿状数组,而不是一个通用的object []列表。已经提出了一种解决方案 - 只需更改返回值的类型即可。但我认为更好的是在任何地方使用接口 - 数组和通用列表都实现IList,所以如果你让你的方法返回IList类型的值,你的lst变量也是IList,那么你不应该即使你的方法返回一个锯齿状数组也有问题。