我遇到了我构建的枚举问题。
Public Enum enumGraphType
Table = 0
Chart = 1
Gauge = 2
3DChart = 3
End Enum
我收到3DChart错误:声明无法出现在枚举主体中。假设Enum结束。
我知道我可以使用名称D3Chart但这不是我想要的。
另外我知道我可以添加一个属性(如描述)并将我的描述设置为3DChart,但这不是我想要的。
我也尝试了[3DChart]但它不起作用
有办法解决这个问题并保留名称吗?
感谢您的时间
答案 0 :(得分:2)
枚举成员不能以数字开头,因此无效:
3DChart = 3
您可以添加下划线
_3DChart = 3
为了它的价值,你可以添加一个描述:
Public Enum EnumGraphType
<ComponentModel.Description("Table")>
Table = 0
<ComponentModel.Description("Chart")>
Chart = 1
<ComponentModel.Description("Gauge")>
Gauge = 2
<ComponentModel.Description("3DChart")>
_3DChart = 3
End Enum
这是一个返回它的枚举扩展名:
Public Module EnumExtensions
<Runtime.CompilerServices.Extension()>
Public Function GetDescription(ByVal EnumConstant As [Enum]) As String
Dim fi As Reflection.FieldInfo = EnumConstant.GetType().GetField(EnumConstant.ToString())
Dim attr() As ComponentModel.DescriptionAttribute =
DirectCast( _
fi.GetCustomAttributes(GetType(ComponentModel.DescriptionAttribute), False), _
ComponentModel.DescriptionAttribute() _
)
If attr.Length > 0 Then
Return attr(0).Description
Else
Return EnumConstant.ToString()
End If
End Function
End Module
现在你以这种方式得到描述:
Dim chartType = EnumGraphType._3DChart
Dim chartTypeDesc = chartType.GetDescription() ' 3DChart