7

我只是不想为每个属性使用“经理”并为此使用一些枚举。

但这似乎是不可能的还是我错了?

所以我尝试更换

[RequiresRole("Managers")]

[RequiresRole(HardCodedRoles.Managers.ToString())]

...

public enum HardCodedRoles
{ 
            Administrators,
            Managers
}
4

3 回答 3

11

一个类而不是一个枚举怎么样,使类静态以避免新的人:ing它?

public static class HardCodedRoles
{
    public const string Managers = "Managers";
    public const string Administrators = "Administrators";
}

[RequiresRole(HardCodedRoles.Managers)] 
于 2012-08-29T17:01:13.580 回答
6

您还可以使用 nameof 关键字,即:

[RequiresRole(nameof(HardCodedRoles.Managers))]
于 2018-01-10T10:19:51.137 回答
2

您看到错误的原因是因为ToString()是一种方法,因此无法在编译时计算该值。

如果您可以改用 [RequiresRole(HardCodedRoles.Managers)],您可以ToString在代码中的其他地方执行,这可以为您提供所需的功能。这将要求您将属性的参数从 更改stringHardCodedRoles

(我想使用 a 是const行不通的,因为参数的类型仍然是string,所以输入不会受到限制。)

于 2012-08-29T16:51:43.570 回答