Gestire le descrizioni sugli enumerativi

Molto spesso per comodità si utilizzano nei programmi gli enumerativi e altrettanto spesso si desidererebbe associare agli elementi una descrizione da utilizzare poi sull’interfaccia utente.

Un metodo può essere quello di utilizzare l’attibuto System.ComponentModel.Description come segue:

Public Enum Prove As Integer
         _
         Uno
         _
         Due
         _
         Tre
End Enum

Per recuperare poi queste descrizioni si può utilizzare la reflection come segue:

Dim fields() As System.Reflection.FieldInfo
fields = GetType(Prove).GetFields(Reflection.BindingFlags.Public Or _
                                                      Reflection.BindingFlags.Static)

For Each field As System.Reflection.FieldInfo In fields
       Dim descriptions() As Object
       descriptions = field.GetCustomAttributes( _
                             GetType(System.ComponentModel.DescriptionAttribute), _
                              False)

       If descriptions.Length > 0 Then
              MsgBox(DirectCast(descriptions(0), _
                            System.ComponentModel.DescriptionAttribute).Description)
       End If

Next