这是为了序列化和反序列化Xml对象
<XmlRoot("orderadd")>
<Serializable()> _
Public Class clsSMsgRequestMessage
<XmlElementAttribute()> Public Property ordertype() As String
<XmlElementAttribute()> Public Property vehicleid() As String
<XmlElementAttribute()> Public Property orderpriority() As String
<XmlElementAttribute("orderpart")> Public Property orderpart() As RequestMessageOrderaddOrderpart()
<XmlAttributeAttribute()> Public Property clientid() As String
<XmlAttributeAttribute()> Public Property transactionid() As String
<XmlAttributeAttribute()> Public Property numberoforderparts() As String
Public Sub New()
End Sub
End Class
Public Class RequestMessageOrderaddOrderpart
<XmlElementAttribute()> Public Property operation() As String
<XmlElementAttribute()> Public Property location() As String
<XmlElementAttribute()> Public Property loadtype() As String
<XmlAttributeAttribute()> Public Property orderpartnumber() As String
Public Sub New()
End Sub
End Class
这对于反序列化是正确的,但是现在我试图正确地创建这个对象,以便我可以将它序列化回XML对象。
Dim anotherTest As clsSMsgRequestMessage = New clsSMsgRequestMessage()
Dim testOrderPart1 As New RequestMessageOrderaddOrderpart
anotherTest.clientid = "data"
anotherTest.orderpriority = "data"
anotherTest.ordertype = "data"
anotherTest.transactionid = "data"
anotherTest.vehicleid = "data"
anotherTest.numberoforderparts = "data"
testOrderPart1.loadtype = "data"
testOrderPart1.location = "data"
testOrderPart1.operation = "data"
testOrderPart1.orderpartnumber = "data"
anotherTest.orderpart(0) = testOrderPart1
这里的最后一行不能工作,因为还没有实例化anotherTest.orderpart(0)。但我不知道如何实例化它因为
anotherTest.orderpart(0) = New RequestMessageOrderaddOrderPart
返回时仍然是"对象引用未设置为对象的实例"。
anotherTest.orderpart = New RequestMessageOrderaddOrderPart
返回"类型的值不能转换为"
的"一维数组"我想我是在正确的轨道上实例化它自己就像我做的'testOrderPart1'但我不知道如何链接到我的另一个测试。orderpart
请帮忙!
你必须先初始化你的array属性:
anotherTest.orderpart = New RequestMessageOrderaddOrderPart(10) {}
10
为数组大小。
之后,你可以设置第一个数组元素:
anotherTest.orderpart(0) = New RequestMessageOrderaddOrderPart
然而,我认为你应该改变你的属性声明成为List(Of RequestMessageOrderaddOrderPart)
。对于列表,你不需要指定项目的数量:
anotherTest.orderpart = New List(Of RequestMessageOrderaddOrderPart)()
添加项目真的很容易:
anotherTest.orderpart.Add(new RequestMessageOrderaddOrderPart())
你仍然可以使用索引器获取/修改项目:
Dim firstItem = anotherTest.orderpart(0)
当然,该项必须先使用Add
方法插入。
List(Of T)
也可以很好地进行序列化。