Come posso ottenere il valore indietro maschera di bit di un enum con l'attributo di bandiera in C #?
-
24-10-2019 - |
Domanda
Nella nostra banca dati abbiamo una maschera di bit che rappresenta quali tipi di azioni che un utente può fare.
Nel nostro C # client quando recuperiamo questo valore intero dal database costruiamo un enum / bandiera. Sembra un po 'come il seguente:
[Flags]
public enum SellPermissions
{
Undefined = 0,
Buy = 1,
Sell = 2,
SellOpen = 4,
SellClose = 8
// ...
}
Nella nostra applicazione Ho una pagina autorizzazioni di modifica che ho poi usato per modificare il valore di questa enum utilizzando l'OR bit per bit su diversi valori enum.
permissions = SellPermisions.Buy | SellPermissions.Sell;
Ora, dopo vengono effettuate tali modifiche, nella mia chiamata base di dati ho bisogno di chiamare uno sProc aggiornamento / inserto che si aspetta un valore intero.
Come faccio ad avere la parte posteriore intero valore di bit per bit fuori del mio enum / bandiera in modo da poter impostare le autorizzazioni modificate nel database?
Soluzione
sono stato in grado di farlo lanciando la variabile a un int.
int newPermissions = (int)permissions.
Altri suggerimenti
int permissionsValue = (int) permissions;