Comment puis-je obtenir le retour de valeur bitmask sur un ENUM avec l'attribut de drapeau en C #?
-
24-10-2019 - |
Question
Dans notre base de données, nous avons un bitmask qui représente les types d'actions qu'un utilisateur peut faire.
Dans notre client C # quand nous récupérons cette valeur entière de la base de données, nous construisons un ENUM / drapeau. Il ressemble un peu à ce qui suit:
[Flags]
public enum SellPermissions
{
Undefined = 0,
Buy = 1,
Sell = 2,
SellOpen = 4,
SellClose = 8
// ...
}
Dans notre application, j'ai une autorisation d'édition la page que je puis utiliser pour modifier la valeur de cette ENUM en utilisant l'opérateur OR sur les différentes valeurs ENUM.
permissions = SellPermisions.Buy | SellPermissions.Sell;
Maintenant, après ces modifications, dans mon appel de base de données que je dois appeler une mise à jour / insert sproc qui attend une valeur entière.
Comment puis-je obtenir l'entier valeur binaire arrière de mon ENUM / drapeau afin que je puisse définir les autorisations modifiées dans la base de données?
La solution
j'ai pu le faire en lançant la variable à un int.
int newPermissions = (int)permissions.
Autres conseils
int permissionsValue = (int) permissions;