C# 无法转换类型';对象[]和#x27;至';System.Collections.Generic.List<;对象>';

C# 无法转换类型';对象[]和#x27;至';System.Collections.Generic.List<;对象>';,c#,asp.net,web-services,list,ienumerable,C#,Asp.net,Web Services,List,Ienumerable,我正在尝试创建和使用一个web服务。。。我正在使用.NETFramework4.0(c#)。 该服务公开了如下方法: public List<object[]> GetData(string strRegion, List<string> lstBrand, List<string> lstColor) 。。。但是我得到,“不能隐式地将类型'object[][]转换为'System.Collections.Generic.List'”。我做错了什么 谢谢

我正在尝试创建和使用一个web服务。。。我正在使用.NETFramework4.0(c#)。 该服务公开了如下方法:

  public List<object[]> GetData(string strRegion, List<string> lstBrand, List<string> lstColor)
。。。但是我得到,“不能隐式地将类型'object[][]转换为'System.Collections.Generic.List'”。我做错了什么

谢谢

试试看

MyService.MyClient os = new MyClient();
  lst = os.GetData(myRegionString, myBrandList, myColorList).ToList();
列表从web服务传递到客户端时将被序列化为数组,因此您需要再次将其转换回列表。

请重试

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

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

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

在解决方案浏览器中,右键单击您的服务并进行配置。您可能已将数据采集默认类型设置为array。您可以将其设置为列表类型。此外,我会重新考虑通过web服务发送
对象。您通常需要定义良好的数据类型。我认为您甚至不能通过web服务发送type
object

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

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

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

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

显然,您返回的是锯齿状数组,而不是对象[]的常规列表。已经提出了一种解决方案——只需更改返回值的类型。但我认为更好的方法是在任何地方使用接口——数组和泛型列表都实现了IList,因此,如果您让方法返回类型为IList的值,并且您的lst变量也是IList,那么即使您的方法返回一个锯齿状数组,您也应该不会有问题

看起来服务方法实际上并没有返回
List
,而是返回
object[][]
。看起来服务方法实际上并没有返回
List
,而是返回
object[][]
。您是什么意思,“……您通常需要一个定义良好的数据类型…”?web服务将向使用者提供一个WSDL文件,该文件描述每个对象/参数的数据类型。类型
对象
可以是任何东西,因此不能很好地定义。您需要使用
int
string
double
,等等。您可以拥有自己的数据类型,其中包含这些基本数据类型。然后WSDL将向使用者描述自定义数据类型包含的内容。如果您希望发送一个列表,其中每个列表项都包含字符串、数字和日期等对象,该怎么办?您如何知道在接收端将其转换为什么类型?您的意思是,“…您通常需要一个定义良好的数据类型…”?web服务将向使用者提供一个WSDL文件,该文件描述每个对象/参数的数据类型。类型
对象
可以是任何东西,因此不能很好地定义。您需要使用
int
string
double
,等等。您可以拥有自己的数据类型,其中包含这些基本数据类型。然后WSDL将向使用者描述自定义数据类型包含的内容。如果要发送一个列表,其中每个列表项都包含字符串、数字和日期等对象,该怎么办?在接收端,您如何知道该转换为什么类型?