gpt4 book ai didi

vb.net - 从值获取VB.net枚举说明

转载 作者:行者123 更新时间:2023-12-03 14:49:05 25 4
gpt4 key购买 nike

如何从其值获取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失败的原因。

关于vb.net - 从值获取VB.net枚举说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18888519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com