.net Net实例化一个类的属性,该类是另一个类的数组

.net Net实例化一个类的属性,该类是另一个类的数组,.net,arrays,vb.net,instantiation,.net,Arrays,Vb.net,Instantiation,这是为了序列化和反序列化Xml对象 <XmlRoot("orderadd")> <Serializable()> _ Public Class clsSMsgRequestMessage <XmlElementAttribute()> Public Property ordertype() As String <XmlElementAttribute()> Public Property vehicleid() As String

这是为了序列化和反序列化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
此处的最后一行不起作用,因为尚未实例化另一个Test.orderpart(0)。但我不知道如何实例化它,因为

anotherTest.orderpart(0) = New RequestMessageOrderaddOrderPart
仍然返回“对象引用未设置为对象的实例”

返回“类型的值无法转换为”的一维数组”

我认为我自己实例化它是正确的,就像我使用“testOrderPart1”一样,但我不知道如何将它链接到我的另一个Test.orderpart


请帮忙

您必须首先初始化数组属性:

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)
也可以用于序列化。

噢,太酷了,谢谢!我必须把它设置成那样的固定尺寸吗?基本上,XML消息返回的“部分”数量是可变的,我不知道。我想他们永远不会有超过20个左右的部件-只需初始化一个巨大的数组,然后定期不使用其中的大部分就可以了吗?我强烈建议使用
列表(RequestMessageOrderaddOrderpart)
而不是数组
anotherTest.orderpart.Add(new RequestMessageOrderaddOrderPart())
Dim firstItem = anotherTest.orderpart(0)