【发布时间】:2016-08-23 10:02:44
【问题描述】:
我有一个“Aspnet_Role”表,其中包含“Admin”、“Moderator”等字符串值。我希望这些值有一个类似枚举的表示形式(手动更新),但是像这样放置一个实际的枚举课堂内:
public enum Role
{
None, Admin, Moderator
}
导致一个尴尬的使用约定:Aspnet_Role.Role.Admin。我宁愿能够做到: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 命名和用法的情况下创建表中值的强类型(即无字符串)枚举?
如果每个值只在代码中出现一次,那将是非常可取的。仅使用枚举,就是这种情况。使用字符串属性,每个值将是两次。使用枚举 AND 属性,例如:
public static Role Admin { get { return Role.Admin;
每个值将是三倍!不漂亮。哦,请不要建议Reflection。我知道你想。
【问题讨论】:
-
枚举必须在类中声明吗?可以直接在命名空间中声明,用
Role.Admin代替Aspnet_Role.Role.Admin吗?见Getting the Enum without having to type its class name?。 -
是的!那会很好!我不知道这是可能的!