如何Enum
从其值获得描述?
我可以使用以下名称获得描述:
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
但是我不知道如何将变量名传递给该函数。我尝试过类似的事情
GetEnumDescription([Enum].GetName(GetType(myEnum), 2)))
但我尝试过的一切都不对。
如果您有枚举类型的变量,则只需
GetEnumDescription(myEnum)
最小的工作示例:
Enum TestEnum
<Description("Description of Value1")>
Value1
End Enum
Public Sub Main()
Dim myEnum As TestEnum = TestEnum.Value1
Console.WriteLine(GetEnumDescription(myEnum)) ' prints "Description of Value1"
Console.ReadLine()
End Sub
如果您有一个Integer
变量,则需要先将其强制转换为枚举类型(CType
同样适用):
GetEnumDescription(DirectCast(myEnumValue, TestEnum))
工作示例:
Enum TestEnum
<Description("Description of Value1")>
Value1 = 1
End Enum
Public Sub Main()
Console.WriteLine(GetEnumDescription(DirectCast(1, TestEnum)))
Console.ReadLine()
End Sub
造成混淆的原因似乎是一种误解:您的方法没有将枚举的“名称”作为参数,而是将了Enum
作为参数。那是不同的,这也是您尝试使用GetName
失败的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句