【发布时间】:2021-02-05 20:01:36
【问题描述】:
我有一个具有此功能的课程:
Public Function BeginstoreOrders(ByVal printOptions As printOptions, ByVal order() As order, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
Return Me.BeginInvoke("storeOrders", New Object() {printOptions, order}, callback, asyncState)
End Function
Partial Public Class order
Private generalShipmentDataField As generalShipmentData
Private parcelsField() As parcels
Private productAndServiceDataField As productAndServiceData
不,我必须向函数发送数据
我试过这个:
'printoptions
Dim printoptions As New dpd_label.printOptions
With printoptions
.printerLanguage = "PDF"
.paperFormat = "A6"
End With
'-----------------
'order
Dim label As dpd_label.order = New dpd_label.order
label.generalShipmentData.recipient.name1 = "a reciever"
label.generalShipmentData.recipient.street = "Street blabla"
label.generalShipmentData.recipient.city = "100"
'etc ....
Dim result
Dim start As New dpd_label.ShipmentServiceSoap33
result = start.storeOrders(printoptions, label)
最后一行 gif 错误: 错误 BC30311 'order' 类型的值无法转换为 'order()'
打印选项...我认为它会起作用,但如何传递订单数据? 我可以发送完整的代码.. 但是这里发布太长了。它是一个肥皂网络服务
有人可以帮忙吗?
【问题讨论】:
-
函数
storeOrders需要order的数组。您可以更改函数签名以期望单个订单,或者在调用它时传递一组订单 -
thanx voor 你的回复...... @ALex B. 如果我这样做,: ' Dim order(0) As dpd_label.order order(0) = New dpd_label.order order(0).generalShipmentData .recipient.name1 = "test name of client" ' 旧错误消失了,但如果我在最后一行运行代码,它会给出一个新错误: System.NullReferenceException HResult=0x80004003 消息我无法设置值,我如何这样做?
-
ByVal order() As order-- 这对 VB 来说是个坏习惯。改为ByVal order() As orderArray -
如果您声明一个变量/参数是一个数组或集合,那么名称应该是复数,以表明它可以存储该类型的多个对象。该参数实际上应该声明为
orders As Order()。类型应始终以大写字母开头。然后,您可以编写像For Each order In orders这样的合理代码。命名约定很重要。你可以使用任何你想要的东西,但不要。使用几乎每个人都在使用的东西,因为它们已经过试验和测试,并且与 .NET Framework 中已有的内容一致。
标签: .net vb.net function class soap