La domanda che mi è stata posta è la seguente: come fare ad enumerare i "Names" di un enum in maniera generica? Ovvero, data la forma:
For i = 0 To System.Enum.GetNames(GetType(System.DayOfWeek)).Lenght-1
...
Next
Come fare per incapsulare il tutto in una funzione e rendere "parametrico" il tipo dell'enum?
Ho trovato un paio di modi per farlo, e me li segno...
Module Module1
Sub Main()
EnumEnum("System.DayOfWeek")
Console.WriteLine()
EnumEnum("System.DateTimeKind")
Console.WriteLine()
EnumEnum(Of System.DayOfWeek)()
Console.WriteLine()
EnumEnum(Of System.DateTimeKind)()
Console.ReadLine()
End Sub
''' <summary>
''' Without Generics
''' </summary>
''' <param name="typeName"></param>
''' <remarks>This method is not Type Safe!!</remarks>
Public Sub EnumEnum(ByVal typeName As String)
For i As Integer = 0 To System.Enum.GetNames(Type.GetType(typeName)).Length - 1
Console.WriteLine(System.Enum.GetName(Type.GetType(typeName), i))
Next
End Sub
''' <summary>
''' With generics
''' </summary>
''' <typeparam name="T"></typeparam>
''' <remarks>This Method is Type Safe!!</remarks>
Public Sub EnumEnum(Of T As Structure)()
For i As Integer = 0 To System.Enum.GetNames(GetType(T)).Length - 1
Console.WriteLine(System.Enum.GetName(GetType(T), i))
Next
End Sub
End Module