C# 无法转换类型';对象[]和#x27;至';System.Collections.Generic.List<;对象>';
我正在尝试创建和使用一个web服务。。。我正在使用.NETFramework4.0(c#)。 该服务公开了如下方法: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'”。我做错了什么 谢谢
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服务发送typeobject
。在解决方案浏览器中,右键单击您的服务并进行配置。您可能已将数据采集默认类型设置为array。您可以将其设置为列表类型。此外,我会重新考虑通过web服务发送对象。您通常需要定义良好的数据类型。我认为您甚至不能通过web服务发送typeobject
。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将向使用者描述自定义数据类型包含的内容。如果要发送一个列表,其中每个列表项都包含字符串、数字和日期等对象,该怎么办?在接收端,您如何知道该转换为什么类型?