假设我有以下枚举,它们表示可以分配给对象的属性组合。
public enum ObjectFlags
{
None = 0,
Red = 1 << 0, // 1
Square = 1 << 1, // 2
Small = 1 << 2, // 4
Fast = 1 << 3, // 8
}
我将所有选定的属性存储在名为ObjectFlag的SQL数据库字段中:
假设我将Red和Small枚举传递给SaveOjectFlags方法并且 在字段中使用按位存储整数组合。
public ActionResult SaveOjectFlags(List<string> myflags)
{
ObjectFlags = myFlags;
foreach(ObjectFlags中的var标志)
{
mydatabaseTable.ObjectFlag + =(int)Enum.Parse(typeof(ObjectFlags),flag);
_dbRepo.Save();
}
}
现在我希望从我的数据库中的ObjectFlags字段中获取值,并将枚举作为字符串列表获取:
我尝试过以下哪些方法不起作用:
var test = (ObjectFlags)mydatabaseTable.ObjectFlag;
上面变量test的值不是来自枚举
的字符串列表我在这里做错了什么?
答案 0 :(得分:1)
请参阅here.
解决方案是:
[Flags]
public enum ObjectFlags
{
None = 0,
Red = 1 << 0, // 1
Square = 1 << 1, // 2
Small = 1 << 2, // 4
Fast = 1 << 3, // 8
}
答案 1 :(得分:0)
我需要做的就是添加[Flags]属性,如Jon Skeet建议的那样