Come posso ottenere il valore indietro maschera di bit di un enum con l'attributo di bandiera in C #?

StackOverflow https://stackoverflow.com/questions/2966895

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?

È stato utile?

Soluzione

sono stato in grado di farlo lanciando la variabile a un int.

int newPermissions = (int)permissions.

Altri suggerimenti

int permissionsValue = (int) permissions;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top