我正在尝试创建和使用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'”。我做错了什么?
谢谢!
答案 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,那么你不应该即使你的方法返回一个锯齿状数组也有问题。