簡體   English   中英

如何在 C# 中使用 flag 屬性從枚舉中取回位掩碼值?

[英]How can I get the bitmask value back out of an enum with the flag attribute in C#?

在我們的數據庫中,我們有一個位掩碼,表示用戶可以進行哪些類型的操作。

在我們的 C# 客戶端中,當我們從數據庫中檢索這個整數值時,我們構造了一個枚舉/標志。 它看起來有點像以下內容:

[Flags]
public enum SellPermissions
{
    Undefined = 0,
    Buy = 1,
    Sell = 2,
    SellOpen = 4,
    SellClose = 8
    // ...
}

在我們的應用程序中,我有一個編輯權限頁面,然后我使用該頁面對不同的枚舉值使用按位 OR 來修改此枚舉的值。

permissions = SellPermisions.Buy | SellPermissions.Sell;

現在,在進行這些更改后,在我的數據庫調用中,我需要調用一個需要整數值的更新/插入 sproc。

如何從我的枚舉/標志中獲取整數位值,以便我可以在數據庫中設置修改后的權限?

我能夠通過將變量轉換為int來實現。

int newPermissions = (int)permissions.
int permissionsValue = (int) permissions;

您可以像這樣使用 HasFlag():

SellPermissions permissions = SellPermissions.Buy | SellPermissions.Sell;

if(permissions.HasFlag(SellPermissions.Sell))
{
    MessageBox.Show("You have Sell permissions");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM