7

各属性に「Managers」を使用せず、そのために列挙型を使用したいだけです。

しかし、それは不可能だと思いますか、それとも私は間違っていますか?

だから私は交換しようとします

[RequiresRole("Managers")]

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

...

public enum HardCodedRoles
{ 
            Administrators,
            Managers
}
4

3 に答える 3

11

列挙型の代わりにクラスを作成して、誰かが新しいものにならないようにクラスを静的にするのはどうですか?

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、コードの他の場所で実行できます。これにより、必要な機能が提供される可能性があります。stringこれには、属性のパラメータをからに変更する必要がありますHardCodedRoles

constパラメーターのタイプはまだであるため、wを使用しても機能しないと思いますstring。したがって、入力は制限されません。)

于 2012-08-29T16:51:43.570 に答える