【问题标题】:Variable in enum attribute : constant expression is required枚举属性中的变量:需要常量表达式
【发布时间】:2019-10-17 21:28:34
【问题描述】:

我需要用变量定义枚举属性。 这将正常工作:

Public Enum CommandsC_e

    <Title("Cmd1")>
    CommandC1

    <Title("Cmd2")>
    CommandC2

End Enum

但是这段代码给了我一个“需要常量表达式”。错误:

Dim Title as string = "Test"

Public Enum CommandsC_e

    <Title(Title)>
    CommandC1

    <Title("Cmd2")>
    CommandC2

End Enum

我在某处读到枚举属性需要在编译时知道。 有解决方法吗?

【问题讨论】:

  • 这些属性是在编译时评估的,而不是在运行时评估的。变量在编译时没有值,因此不能在该上下文中使用。你想做的事情是不可能的。如果您将Title 声明为常量而不是变量,那么您将能够使用它,因为该值在编译时是已知的。
  • 这太糟糕了,据我所知,在运行时更改属性是不可能的。我想我会为每个变量值做一个枚举。感谢您的帮助
  • Private Const enuTitle As String = "Test" => Public Enum CommandsC_e &lt;Description(enuTitle)&gt; (...) End Enum

标签: vb.net enums


【解决方案1】:

我设法弄清楚如何使这项工作。 您需要将变量包装到一个模块中,有一个带有输入框的示例,其中填充了一个枚举属性:

Module Vars

    Property desc As String = InputBox("test", "test", "test")   End Module

End Module

Public Enum CommandsC_e

    <Title(GetType(Vars), NameOf(Vars.desc))>   
    CommandC2

End Enum

【讨论】:

    猜你喜欢
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多