Как я могу получить значение битовой маски из перечисления с атрибутом флага в C #? - PullRequest
3 голосов
/ 03 июня 2010

В нашей базе данных есть битовая маска, представляющая, какие типы действий может выполнять пользователь.

В нашем клиенте C # при извлечении этого целочисленного значения из базы данных мы создаем перечисление / флаг. Это выглядит примерно так:

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

В нашем приложении у меня есть страница с правами на редактирование, которую я затем использую для изменения значения этого перечисления с помощью побитового ИЛИ для различных значений перечисления.

permissions = SellPermisions.Buy | SellPermissions.Sell;

Теперь, после внесения этих изменений, в моем вызове базы данных мне нужно вызвать sproc update / insert, который ожидает целочисленное значение.

Как я могу получить целочисленное побитовое значение из моего enum / flag, чтобы я мог установить измененные разрешения в базе данных?

Ответы [ 2 ]

7 голосов
/ 03 июня 2010

Я смог сделать это, приведя переменную к типу int.

int newPermissions = (int)permissions.
2 голосов
/ 03 июня 2010
int permissionsValue = (int) permissions;
...