"Admin"、 "Moderator"などの文字列値を持つ "Aspnet_Role"テーブルがあります。これらの値の列挙型の表現をしたいと思います。しかし、クラス内で、次のように実際の列挙型を置く:Aspnet_Role.Role.Admin
:テーブルの型付きの列挙型の表現
public enum Role
{
None, Admin, Moderator
}
は厄介な利用規約を起こします。私はむしろできるはずです:Aspnet_Role.Admin
。
私は、文字列プロパティのようなものを考えた:
public static string Admin { get { return "Admin"; } }
その後私は、列挙型の強い型付けの優位性を失います。私のような素敵なヘルパーメソッド作成することができます列挙して、例えば:
public static bool IsUserInRole(Aspnet_Role.Role role){
return System.Web.HttpContext.Current.User.IsInRole(role.ToString());
}
はAspnet_Role.Role
命名せずに私のテーブル内の値の強く型付けされた(すなわちなしの文字列)列挙型のような列挙を作成する方法はありますし、使用法?
各値がコード内に1回しか表示されない場合は、非常に好ましいでしょう。列挙型だけでは、そうです。文字列プロパティを使用すると、値ごとに2回になります。列挙型のANDプロパティを使用すると、次のようになります。
public static Role Admin { get { return Role.Admin;
値ごとに3回になります!綺麗ではない。ああ、Reflection
を提案しないでください。私はあなたがしたいと思う。
は、列挙型はクラスの中で宣言されていますか?名前空間に直接宣言し、 'Aspnet_Role.Role.Admin'の代わりに' Role.Admin'として使用できますか? [クラス名を入力しなくてもEnumを取得する](http://stackoverflow.com/questions/12989636/getting-the-enum-without-having-to-type-its-class-name)を参照してください。 – ConnorsFan
はい!それはうまくいく!私はそれが可能であることを知らなかった! –