0

5 つのサーバーで実行されている同じサービスに対して同じ SOAP 呼び出しを行います。返されるすべてのコレクションを連結して、同じオブジェクトの出力バージョンにTWeeksHeldする必要があります ( )。ここに私のクラスがあります:TDAEHeldList

Partial Public Class TDAEHeldList      
    Private siteIdField As String        
    Private countField As Integer        
    Private returnCodeField As String        
    Private errorMessageField As String        
    Private daeWeeksHeldField() As TWeeksHeld
End Class

Partial Public Class TWeeksHeld        
    Private checkInField As String        
    Private resortNameField As String        
    Private countryField As String        
    Private regionField As String        
    Private localityField As String        
    Private weekIdField As String        
    Private bedroomsField As String        
    Private sleepsField As String        
    Private bookingTypeField As String        
    Private resortIdField As String        
    Private timeToExpiryField As String        
    Private specialFlagField As String        
    Private extMemberNoField As String        
    Private stockDisplayField As String        
    Private ownerBusCatCodeField As String
End Class

daeWeeksHeldField()各呼び出しでは、コレクションの内容を出力クラスのコレクションに追加する必要がありますdaeWeeksHeldField()

私は次の作業をしています:

Dim returnData As New TDAEHeldList
Dim weeksOnHold As New TDAEHeldList
Dim weeksOnHoldArray As TWeeksHeld
weeksOnHold = WSCaller.GetForeignWeeksOnHold(siteID,affiliateMemberID)

次に、追加してみてください

weeksOnHoldArray += String.Concat(weeksOnHoldArray, weeksOnHold.daeWeeksHeldField)

に続く:

returnData.daeWeeksHeldField = weeksOnHoldArray.ToArray(GetType(TWeeksHeld))

私も試しました:

for Each x As Object In weeksOnHold.daeWeeksHeld
  weeksOnHoldArray.Add(x)
Next

加えて、他のいくつかの Google 手法を使用します。私がやりたいことは可能ですか、そうでない場合、どのように行われますか?

4

1 に答える 1

0

daeWeeksHeldFieldプロパティをコレクションと呼びますが、コレクションではありません。配列です。配列には確かに用途がありますが、この場合、本当に必要なのはコレクションです。コレクションを使用すると、新しいアイテムを簡単に追加できます。一方、配列は動的に自動的に拡張できないため、リストのサイズが固定されていない場合、配列を使用するのは面倒になります。

使用される最も一般的なコレクションであり、私がお勧めするコレクションはですList(Of T)。使用方法は次のとおりです。

Dim combinedWeeksOnHold As New List(Of TWeeksHeld)
Dim weeksOnHold1 = WSCaller1.GetForeignWeeksOnHold(siteID1, affiliateMemberID1)
If weeksOnHold1.daeWeeksHeldField IsNot Nothing Then
    combinedWeeksOnHold.AddRange(weeksOnHold1.daeWeeksHeldField)
End If
Dim weeksOnHold2 = WSCaller2.GetForeignWeeksOnHold(siteID2, affiliateMemberID2)
If weeksOnHold2.daeWeeksHeldField IsNot Nothing Then
    combinedWeeksOnHold.AddRange(weeksOnHold2.daeWeeksHeldField)
End If

それらの配列が本当に必要な場合は、いつでも次List(Of T).ToArrayのように呼び出すことができます。

Dim array() As TWeeksHeld = combinedWeeksOnHold.ToArray()
于 2013-02-14T18:43:13.067 に答える