C# 在数据注释中使用枚举
我使用的数据注释如下所示:C# 在数据注释中使用枚举,c#,.net-core,C#,.net Core,我使用的数据注释如下所示: [RequiresAnyRole("Admin", "Member")] 我不喜欢传递字符串,因为这可能是一个痛苦的重构,但如果我尝试这样做一个枚举: public enum Roles { Admin, Member } 然后尝试将枚举强制转换为字符串,如下所示: [RequiresAnyRole(Roles.Admin.ToString(), Roles.Member.ToString())] 然后我得
[RequiresAnyRole("Admin", "Member")]
我不喜欢传递字符串,因为这可能是一个痛苦的重构,但如果我尝试这样做一个枚举:
public enum Roles
{
Admin,
Member
}
然后尝试将枚举强制转换为字符串,如下所示:
[RequiresAnyRole(Roles.Admin.ToString(), Roles.Member.ToString())]
然后我得到一个错误:
错误CS0182属性参数必须是常量表达式、typeof表达式或属性参数类型的数组创建表达式
我对这个错误的理解是,它在编译时必须是一个字符串。我曾尝试制作一个以enum为键的静态字典,但也没有成功
以稍后可以重构的方式传递这些值的最佳方式是什么,即不传递字符串,而是传递某种可以更新的引用?这是一个很好的使用机会。您可以保留枚举,并执行以下操作:
[RequiresAnyRole(nameof(Roles.Admin), nameof(Roles.Member))]
nameof
表达式是常量表达式
当然,如果您可以更改属性的声明,那么应该将其更改为接受您的
角色枚举。这是一个很好的使用机会。您可以保留枚举,并执行以下操作:
[RequiresAnyRole(nameof(Roles.Admin), nameof(Roles.Member))]
nameof
表达式是常量表达式
当然,如果可以更改属性的声明,那么应该将其更改为接受角色
枚举