代码之家  ›  专栏  ›  技术社区  ›  Guerrilla

在数据注释中使用枚举

  •  0
  • Guerrilla  · 技术社区  · 5 年前

    [RequiresAnyRole("Admin", "Member")]
    

    我不喜欢传递字符串,因为以后重构可能会很痛苦,但是如果我尝试这样做一个枚举:

    public enum Roles
    {
        Admin,
        Member
    }
    

    然后尝试将枚举转换为字符串,如下所示:

    [RequiresAnyRole(Roles.Admin.ToString(), Roles.Member.ToString())]
    

    错误CS0182属性参数必须是属性参数类型的常量表达式、typeof表达式或数组创建表达式

    我对这个错误的理解是它在编译时必须是一个字符串。我曾试图制作一个以enum为键的静态字典,但也没用。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Sweeper    5 年前

    这是一个很好的利用机会 nameof . 您可以保留枚举,并执行以下操作:

    [RequiresAnyRole(nameof(Roles.Admin), nameof(Roles.Member))]
    

    名称 表达式是常量表达式。

    Roles