Есть несколько других вариантов.
Одним из них является получение имен, используемых в перечислении. Например:
Friend Enum ImgFormat
Bitmap
GIF
JPeg
TIFF
PNG
End Enum
Dim ImgNames() As String
...
ImgNames = [Enum].GetNames(GetType(ImgFormat))
Если имена не являются дружественными достаточно, украшают их описанием:
Imports System.ComponentModel
Friend Enum ImgFormat
<Description("Bitmap (BMP)")> Bitmap
<Description("Graphic Interchange (GIF)")> GIF
<Description("Jpg/JPeg (JPG)")> JPeg
<Description("Tagged Image (TIFF)")> TIFF
<Description("Portable Graphics (PNG)")> PNG
End Enum
Для получения описания, требует осмысления, которое вовлекается:
Imports System.Reflection
Imports System.ComponentModel
Public Class EnumConverter
' gets a single enum description
Public Shared Function GetEnumDescription(ByVal EnumConstant As [Enum]) As String
Dim fi As FieldInfo = EnumConstant.GetType().GetField(EnumConstant.ToString())
Dim attr() As DescriptionAttribute = _
DirectCast(_
fi.GetCustomAttributes(GetType(DescriptionAttribute), False), _
DescriptionAttribute())
If attr.Length > 0 Then
Return attr(0).Description
Else
Return EnumConstant.ToString()
End If
End Function
' get all the enum descriptions:
Public Shared Function GetEnumDescriptions(ByVal type As Type) As String()
Dim n As Integer = 0
Dim enumValues As Array = [Enum].GetValues(type)
Dim Descr(enumValues.Length - 1) As String
For Each value As [Enum] In enumValues
Descr(n) = GetEnumDescription(value)
n += 1
Next
Return Descr
End Function
End Class
Чтобы использовать :
Dim ImgNames() As String = EnumConverter.GetEnumDescriptions(ImgFormat)
будет «Graphic Interchange (GIF)»
Это сломается, если значения Enum не являются значениями по умолчанию 0, 1, 2 ... ЕСЛИ это проблема (и это действительно так), а затем постройте класс вокруг него, чтобы сохранить имя или описание с помощью значения Enum. Вместо того, чтобы создавать класс для создания псевдо-перечисления, создайте список пар имен и значений, состоящий из Описания и значения Enum.
Прежде всего, вы не можете установить 'Enum' как' string': * Оператор Enum может объявить тип данных перечисления. Каждый член принимает тип данных перечисления. Вы можете указать Byte, Integer, Long, SByte, Short, UInteger, ULong или UShort. * – MarcinJuraszek
Вместо этого используйте 'Dictionary'. –
NeverHopeless