1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Public Class EnumAttributs
''This procedure gets the <Description> attribute of an enum constant, if any.
''Otherwise it gets the string name of the enum member.
Public Shared Function EnumDescription(ByVal EnumConstant As [Enum]) As String
Dim field As FieldInfo = EnumConstant.GetType().GetField(EnumConstant.ToString())
Return EnumDescription(field)
End Function
Public Shared Function EnumDescription(Of T)(ByVal FieldName As String) As String
Dim field As FieldInfo = GetField(Of T)(FieldName)
Return EnumDescription(field)
End Function
Public Shared Function EnumDescription(ByVal Field As FieldInfo) As String
Dim aattr() As DescriptionAttribute = DirectCast(Field.GetCustomAttributes(GetType(DescriptionAttribute), False), DescriptionAttribute())
If aattr.Length > 0 Then
Return aattr(0).Description
Else
Return Field.Name
End If
End Function
Private Shared Function GetField(Of T)(StringEnum As String) As FieldInfo
Dim Type As Type = GetType(T)
Dim fields As FieldInfo() = Type.GetFields
For Each Field As FieldInfo In fields
If Field.Name = StringEnum Then Return Field
Next
Return Nothing
End Function
Public Shared Function GetFields(Of T)() As FieldInfo()
Dim fields As FieldInfo() = GetType(T).GetFields
Return fields
End Function
Public Shared Function GetValues(Of T)() As Array
Return [Enum].GetValues(GetType(T))
End Function
Public Shared Function GetNames(Of T)() As String()
Return [Enum].GetNames(GetType(T))
End Function
End Class |