WCFで配列の受け渡し(多次元配列とジャグ配列)

WCFで多次元配列の受け渡しをしたくて困ってたら

コレクションのシリアル化
コレクションのシリアル化規則を以下に示します。
・コレクション型は、組み合わせる (コレクションのコレクションを持つ) ことができます。 ジャグ配列は、コレクションのコレクションとして扱われます。 多次元配列はサポートされていません。

データ コントラクトのコレクション型


お、おぅ。

多次元配列はダメだからジャグ配列にしてね、と。
業務コードは多次元配列で色々組んでるから、WCFに飛ばす時にジャグ配列に変換し、返ってきたジャグ配列を多次元配列に戻してあげればいいね。

''' <summary>
''' 二次元配列からジャグ配列に変換します。
''' </summary>
''' <param name="multiArray">二次元配列</param>
''' <returns>ジャグ配列</returns>
''' <remarks></remarks>
Public Function ConvertToJaggedArray(multiArray As String(,)) As String()()
    Dim numOfColumns = multiArray.GetLength(0)
    Dim numOfRows = multiArray.GetLength(1)
    Dim jaggedArray = New String(numOfColumns - 1)() {}

    For c = 0 To numOfColumns - 1
        jaggedArray(c) = New String(numOfRows - 1) {}
        For r = 0 To numOfRows - 1
            jaggedArray(c)(r) = multiArray(c, r)
        Next
    Next
    Return jaggedArray
End Function

''' <summary>
''' ジャグ配列から二次元配列に変換します。
''' </summary>
''' <param name="jaggedArray">ジャグ配列</param>
''' <returns>二次元配列</returns>
''' <remarks></remarks>
Public Function ConvertTo2DArray(jaggedArray As String()()) As String(,)
    Dim numOfColumns = jaggedArray.Length
    Dim numOfRows = jaggedArray(0).Length
    Dim temp2DArray = New String(numOfColumns - 1, numOfRows - 1) {}

    For c = 0 To numOfColumns - 1
        For r = 0 To numOfRows - 1
            temp2DArray(c, r) = jaggedArray(c)(r)
        Next
    Next
    Return temp2DArray
End Function

ここを参考にさせていただきました。
.net - jagged arrays <-> multidimensional arrays conversion in ASP.NET - Stack Overflow