0
私はこのようなプログラムを持っています。各ループの内部のオブジェクトを変更すると、最後の値を持つすべてのオブジェクトのプロパティが設定されます
Module Module1
Public Class Mstr
Public Property Prop1 As String
Public Property Prop2 As String
Public Property Prop3 As String
Public Property Prop4 As String
Public Property lstDtlsA As List(Of DtlsA)
Public Property DtlsB As DtlsB
End Class
Public Class DtlsA
Public Property Prop1 As String
Public Property Prop2 As Integer
Public Property Prop3 As String
Public Property Prop4 As Integer
Public Property DtlsB As DtlsB
End Class
Public Class DtlsB
Public Property Prop1 As String
Public Property Prop2 As Integer
Public Property Prop3 As String
Public Property Prop4 As Integer
End Class
Private Sub Process(ByVal mstr As Mstr)
Dim lstTemp As New List(Of DtlsA)
For Each dtl In mstr.lstDtlsA
'Do some processing
PopulateDtlsBForDtlsA(mstr, dtl)
lstTemp.Add(dtl)
Next
'Finally set the modified dtls list to mstr
mstr.lstDtlsA = lstTemp
End Sub
Sub PopulateDtlsBForDtlsA(ByVal mstr As Mstr, ByVal dtl As DtlsA)
Dim dtlB As New DtlsB
dtlB = mstr.DtlsB
dtlB.Prop1 = mstr.Prop1
dtlB.Prop2 = dtl.Prop2
dtlB.Prop4 = dtl.Prop4
dtl.DtlsB = dtlB
End Sub
Sub Main()
Dim mstr As New Mstr
mstr.Prop1 = "Master Property 1"
mstr.Prop2 = "Master Property 2"
mstr.Prop3 = "Master Property 3"
mstr.Prop4 = "Master Property 4"
mstr.lstDtlsA = New List(Of DtlsA)
Dim dtlA As DtlsA
dtlA = New DtlsA
dtlA.Prop1 = "Detail A Property 11"
dtlA.Prop2 = 12
dtlA.Prop3 = "Detail A Property 13"
dtlA.Prop4 = 12
mstr.lstDtlsA.Add(dtlA)
dtlA = New DtlsA
dtlA.Prop1 = "Detail A Property 21"
dtlA.Prop2 = 22
dtlA.Prop3 = "Detail A Property 23"
dtlA.Prop4 = 24
mstr.lstDtlsA.Add(dtlA)
dtlA = New DtlsA
dtlA.Prop1 = "Detail A Property 31"
dtlA.Prop2 = 32
dtlA.Prop3 = "Detail A Property 33"
dtlA.Prop4 = 34
mstr.lstDtlsA.Add(dtlA)
Dim dtlB As New DtlsB
dtlB.Prop1 = "Detail B Property 1 set by master"
dtlB.Prop3 = "Detail B Property 3 set by master"
mstr.DtlsB = dtlB
Process(mstr)
End Sub
エンドモジュール
しかし、私はそれが期待するとして、それが機能していません。
3つのDtlsAオブジェクトすべてのDtlsBプロパティは、最後の反復の値を持っています。私がここで間違っていることを私に教えてください。コンセプトについての少しの説明も非常に役に立つでしょう。ありがとう!!!