2012-05-14 151 views
1

发送列表到Web服务后,我发现了一个错误。无法投类型的对象System.Collections.Generic.List`1 [System.Int32]为键入“crmWebService.ArrayOfInt”

这是调用Web服务的代码:

Dim sProgramInterest As New List(Of Integer)  
crmService.InsertProspectGetId(sProgramInterest.ToList) 

但我发现了这个错误。

无法强制'System.Collections.Generic.List`1 [System.Int32]'类型的对象键入'crmWebService.ArrayOfInt'。

参数由Web服务被接受的是:

ByVal sProgramInterest As List(Of Integer) 
+1

看起来像crmWebService.ArrayOfInt是一个自定义类型。你可以发布它的定义吗?右键单击InsertProspectGetId并转到定义。它的参数类型是ArrayOfInt,它的定义是否可以发布? – Youssef

回答

3

与其说ToList的,叫ToArray

crmService.InsertProspectGetId(sProgramInterest.ToArray) 
+0

当我这样做---我得到这个错误错误'整数的一维数组'类型的值不能转换为'crmWebService.ArrayOfInt' –

+1

@JeremyLewallen - 确定。我假设'ArrayOfInt'是一个整数数组似乎是不正确的。什么是'crmWebService.ArrayOfInt'?它是如何定义的? – Oded

1

看来,服务接受整型数组,而不是为int名单。这样试试:

crmService.InsertProspectGetId(sProgramInterest.ToArray()) 
+0

我认为你的答案是用C#。应该是'ToArray' for vb.net – Youssef

+0

@Youssef - 你错了。 “ToArray”和“ToArray()”都在VB.NET中工作。当一个方法调用是无参数时,'()'在VB.NET中是可选的。 – Oded

+0

@Youssef:上次我使用VB.NET的时候是接受了两种样式 - 括号和没有,所以它是可选的。国际海事组织丑陋和删除VB.NET程序员的大脑。 – abatishchev

0

我认为你必须做这样的事情,

Dim sProgramInterest As New crmWebService.ArrayOfInt  
crmService.InsertProspectGetId(sProgramInterest) 

基于错误,参数必须是crmWebService.ArrayOfInt类型。您必须使用该类,而不是List(Of Integer)

相关问题