vb.net格式化Web服务的数据结构输入

问题描述

(改版后的问题)

我需要格式化RPG Web服务的输入数据结构。我尝试使用列表,但它不起作用。当我尝试此代码时:

Dim clist As New List(Of LabelView.PASSBACK.dscustomers)
clist.Add(New LabelView.PASSBACK.dscustomers() With {.BALANCEDUE = 185.42,.CREATIONDATE = 20200101,.CUSTOMERID = 1,.CUSTOMERTYPE = "ACTIVE",.FIRSTNAME = "Pat",.LASTNAME = "Smith"})
clist.Add(New LabelView.PASSBACK.dscustomers() With {.BALANCEDUE = 185.42,.CUSTOMERID = 2,.FIRSTNAME = "Jordan",.LASTNAME = "Jones"})

input.DSCUSTOMERS = clist
// ^^ Intellisense error:
// Value of type 'List (Of dsCustomers)' cannot be converted to 'dscustomers()'.

我不知道如何以编程方式构建兼容的东西。当我尝试这个:

Dim client As PASSBACK.PASSBACK = New PASSBACK.PASSBACK()
Dim input As PASSBACK.passbackInput = New PASSBACK.passbackInput
input.DSCUSTOMERS(0).FIRSTNAME = "Hello"

它可以编译,但是当我运行时,我得到“对象引用未设置为对象的实例。”

解决方法

此行的问题:

input.DSCUSTOMERS = clist

是因为DCUSTOMERS是一个数组(错误消息的“ dcustomers()”),而List(Of dcustomer)不能直接分配给数组。

List(Of T)上有一个转换函数,它将给您一个名为T()的数组ToArray。只需对您的代码进行少量更改:

input.DSCUSTOMERS = clist.ToArray()

这将创建一个新数组,其内容与List相同(如果dcustomersClass,则该数组的内容将是完全相同的对象,而如果是Structure,然后将它们复制)并将其分配给DCUSTOMERS

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...