【问题标题】:vb.net pass data to another classvb.net 将数据传递给另一个类
【发布时间】: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


【解决方案1】:

我不能更改类(由soapui自动生成)

我已将代码更改为:

Dim orders(1) As dpd_label.order
        orders(1) = New dpd_label.order()


        With orders(1)
            .generalShipmentData.sendingDepot() = ""  'this line gives a error : System.NullReferenceException: 'De objectverwijzing is niet op een exemplaar van een object ingesteld.'
            'dpd.dpd_label.order.get_generalShipmentData returned Nothing.


        End With

        Dim result
        Dim start As New dpd_label.ShipmentServiceSoap33
        result = start.storeOrders(printoptions, orders)

所以我的问题是如何设置部分订单类的变量?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-13
    • 2015-07-09
    • 1970-01-01
    • 2021-06-11
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    相关资源
    最近更新 更多