我只是不想为每个属性使用“经理”并为此使用一些枚举。
但这似乎是不可能的还是我错了?
所以我尝试更换
[RequiresRole("Managers")]
和
[RequiresRole(HardCodedRoles.Managers.ToString())]
...
public enum HardCodedRoles
{
Administrators,
Managers
}
我只是不想为每个属性使用“经理”并为此使用一些枚举。
但这似乎是不可能的还是我错了?
所以我尝试更换
[RequiresRole("Managers")]
和
[RequiresRole(HardCodedRoles.Managers.ToString())]
...
public enum HardCodedRoles
{
Administrators,
Managers
}
一个类而不是一个枚举怎么样,使类静态以避免新的人:ing它?
public static class HardCodedRoles
{
public const string Managers = "Managers";
public const string Administrators = "Administrators";
}
[RequiresRole(HardCodedRoles.Managers)]
您还可以使用 nameof 关键字,即:
[RequiresRole(nameof(HardCodedRoles.Managers))]
您看到错误的原因是因为ToString()
是一种方法,因此无法在编译时计算该值。
如果您可以改用 [RequiresRole(HardCodedRoles.Managers)],您可以ToString
在代码中的其他地方执行,这可以为您提供所需的功能。这将要求您将属性的参数从 更改string
为HardCodedRoles
。
(我想使用 a 是const
行不通的,因为参数的类型仍然是string
,所以输入不会受到限制。)