Vb.net 可序列化多维数组的类是什么?
编辑:见下文 我有一个web服务,它使用一类函数(通过InfoPath)返回各种业务流程中使用的数据 其中一个函数接受给定的SQLCommand对象并将其执行到SQLDataReader中。现在,根据使用的SQL命令文本,这可能返回一列或多列中的一行或多行。那么这个函数返回的最佳类是什么呢?记住它需要由web服务序列化 我现有的代码是:Vb.net 可序列化多维数组的类是什么?,vb.net,web-services,arrays,class,serialization,Vb.net,Web Services,Arrays,Class,Serialization,编辑:见下文 我有一个web服务,它使用一类函数(通过InfoPath)返回各种业务流程中使用的数据 其中一个函数接受给定的SQLCommand对象并将其执行到SQLDataReader中。现在,根据使用的SQL命令文本,这可能返回一列或多列中的一行或多行。那么这个函数返回的最佳类是什么呢?记住它需要由web服务序列化 我现有的代码是: Dim array As New ArrayList Try conCMS.Open() Dim rdr A
Dim array As New ArrayList
Try
conCMS.Open()
Dim rdr As SqlDataReader = cmdCurrent.ExecuteReader
While rdr.Read
If rdr.VisibleFieldCount > 1 Then
Dim complexType(rdr.VisibleFieldCount - 1) As String
For rowIndex As Integer = 0 To rdr.VisibleFieldCount - 1
complexType(rowIndex) = rdr(rowIndex)
Next
array.Add(complexType)
Else
array.Add(rdr(0))
End If
End While
conCMS.Close()
Return array
Catch ex As Exception
array.Add("ERROR " & ex.Message)
End Try
Return Nothing
现在我知道这不是有效的代码,但这是一项正在进行的工作
正如您可能看到的,这将生成一个字符串数组来表示包含多个列的行,但是web服务无法对其进行序列化
所以有两件事是真的
- 关于要使用的有效类型的一些指导(无需编写自己的可序列化类)
- 关于进一步改进代码的一些建议
但是,请告诉我如何改进。如果您的代码在调用之前知道返回数据的模式,那么您应该以相同的形状返回数据。为返回数据的每一列创建一个具有适当类型属性的结构或类。对于每一行,创建这样一个结构的实例,并填写返回列中的属性。然后将每个实例添加到该结构的强类型列表中,即(T的)列表。然后返回列表
首先,ArrayList是在.NET中出现泛型之前创建的。现在,最好使用强类型集合,而不是ArrayList,ArrayList基本上是(任何内容的)列表。谢谢John,问题是这段代码可能会从未知表返回未知数量的列。此代码与后面的实际数据非常松散地耦合。所以我不能创建一个固定的类来定义返回的数据。注意到你在ArrayList上的观点,但是如果没有一个结构来表示数据,我就不能有一个列表(T),因为T必须是Object,而这只是ArrayList,对吗?
If rdr.VisibleFieldCount > 1 Then
Dim complexType As New ArrayList
For rowIndex As Integer = 0 To rdr.VisibleFieldCount - 1
complexType.Add(rdr(rowIndex))
Next
array.Add(complexType)
Else
array.Add(rdr(0))
End If