Confessions of a Dangerous Mind

Brain.FlushBuffer()
posts - 176, comments - 234, trackbacks - 93

Enumerare un Enum...genericamente

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

Print | posted on giovedì 19 aprile 2007 13:57 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET