枚举成员列表以数字开头

时间:2014-01-17 14:08:51

标签: vb.net enums

我遇到了我构建的枚举问题。

  Public Enum enumGraphType
    Table = 0
    Chart = 1
    Gauge = 2
    3DChart = 3
  End Enum

我收到3DChart错误:声明无法出现在枚举主体中。假设Enum结束。
我知道我可以使用名称D3Chart但这不是我想要的。
另外我知道我可以添加一个属性(如描述)并将我的描述设置为3DChart,但这不是我想要的。
我也尝试了[3DChart]但它不起作用 有办法解决这个问题并保留名称吗?

感谢您的时间

1 个答案:

答案 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