如何使用 C# 中的 flag 属性从枚举中获取位掩码值?
在我们的数据库中,我们有一个位掩码,表示用户可以执行哪些类型的操作。
在我们的 C# 客户端中,当我们从数据库检索这个整数值时,我们构造一个枚举/标志。它看起来有点像下面这样:
[Flags]
public enum SellPermissions
{
Undefined = 0,
Buy = 1,
Sell = 2,
SellOpen = 4,
SellClose = 8
// ...
}
在我们的应用程序中,我有一个编辑权限页面,然后我使用该页面对不同的枚举值使用按位“或”来修改此枚举的值。
permissions = SellPermisions.Buy | SellPermissions.Sell;
现在,进行这些更改后,在我的数据库调用中,我需要调用一个需要整数值的更新/插入存储过程。
如何从枚举/标志中获取整数按位值,以便可以在数据库中设置修改的权限?
In our database we have a bitmask that represents what types of actions a user can make.
In our C# client when we retrieve this integer value from the database we construct an enum/flag. It looks somewhat like the following:
[Flags]
public enum SellPermissions
{
Undefined = 0,
Buy = 1,
Sell = 2,
SellOpen = 4,
SellClose = 8
// ...
}
In our application I have an edit permissions page which I then use to modify the value of this enum using the bitwise OR on different enum values.
permissions = SellPermisions.Buy | SellPermissions.Sell;
Now, after these changes are made, in my database call I need to call an update/insert sproc which is expecting an integer value.
How do I get the integer bitwise value back out of my enum/flag so I can set the modified permissions in the database?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我可以通过将变量转换为 int 来做到这一点。
I was able to do it by casting the variable to an int.
您可以像这样使用 HasFlag() :
You can use HasFlag() like this: