我正在考虑为我的权限类型创建一个枚举,而不是将它们全部存储为db中的true或false值。
class Program
{
static void Main(string[] args)
{
Test addEdit = Test.AddEdit;
bool hasEdit = addEdit.HasFlag(Test.Edit);
bool hasAdd = addEdit.HasFlag(Test.Add);
bool hasDelete = addEdit.HasFlag(Test.Delete);
Console.WriteLine(hasEdit);
Console.WriteLine(hasAdd);
Console.WriteLine(hasDelete);
Console.Read();
}
}
[Flags]
public enum Test
{
Add = 0,
Edit = 1,
Delete = 2,
AddEdit = Add | Edit
}
所以我做到了这一点。我发现有趣的是addEdit varaible在通过VS调试器查看时只显示“编辑”的值。起初我以为它没有存储这两个值。
我使用了hasFlag方法,当然它知道这两个值。
这是一个错误还是什么?
答案 0 :(得分:5)
AddEdit== Edit == 1
。因此,调试器不知道您是否要将1转换为“Edit”或“AddEdit”。
很可能你想要
[Flags]
public enum Test
{
None = 0,
Add = 1,
Edit = 2,
Delete = 4,
AddEdit = Add | Edit
}
答案 1 :(得分:3)