2009-04-20 63 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