2009-04-20 64 views
1

我目前在VB.NET中編寫一個幫助函數來將枚舉值數組轉換爲CSV,但是我遇到了一些困難......枚舉值的通用數組?

我不確定什麼類型的爭論我的函數應該採取,如果我想使它足夠通用,以處理任何我傳入它的枚舉。

這是我到目前爲止有:

Public Shared Function EnumArrayToCSV(ByVal values() As System.Enum) As String 
    Dim result As Generic.List(Of String) = New Generic.List(Of String) 

    For i As Integer = 0 To values.GetUpperBound(0) 
     result.Add(Convert.ToInt32(values(i))) 
    Next i 

    Return String.Join(",", result.ToArray) 
End Function 

我意識到arguement是不正確的,我用枚舉的數組工作。理想情況下,我想要使用一組通用枚舉值。

誰能幫助?

回答

4
Public Shared Function CSVFromEnumValues(Of T)(ByVal values As IEnumerable(Of T)) As String 
    Dim sb As New StringBuilder() 

    Dim delimiter As String = "" 
    For Each item As T In values 
     sb.Append(delimiter).Append(Convert.ToInt32(item).ToString()) 
     delimiter = "," 
    Next item 

    return sb.ToString() 
End Function 

這個代碼的一些注意事項:

  • 我來喜歡TypeFromType() rather than TypeToType() naming convention,因爲它把包含它們,而不是相反的附近的變量類型。
  • 此代碼將接受一個數組。它也將接受您可以想到的列表或大多數其他收藏。這是一件好事,它使你的代碼更加強大和靈活。
  • 此代碼不限於枚舉值,但枚舉值只是一種類型。他們的價值沒有什麼特別之處。這並不是一件壞事。它仍然適用於枚舉值,所以你可以使用它很好。它適用於其他項目不一定是缺陷。
+0

上面代碼中的輕微語法錯誤 For循環應該可能讀爲「對於每個項目作爲T中的值」 – 2009-04-20 14:59:27