¿Cómo puedo recuperar el valor de Bitmask de un enumio con el atributo de bandera en C#?
-
24-10-2019 - |
Pregunta
En nuestra base de datos tenemos una maestría que representa qué tipos de acciones puede hacer un usuario.
En nuestro cliente C#, cuando recuperamos este valor entero de la base de datos, construimos un enum/indicador. Se parece un poco a lo siguiente:
[Flags]
public enum SellPermissions
{
Undefined = 0,
Buy = 1,
Sell = 2,
SellOpen = 4,
SellClose = 8
// ...
}
En nuestra aplicación tengo una página de permisos de edición que luego uso para modificar el valor de este enum utilizando el bitwise o en diferentes valores de enum.
permissions = SellPermisions.Buy | SellPermissions.Sell;
Ahora, después de que se realizan estos cambios, en mi llamada de base de datos necesito llamar a un SPROC de actualización/inserción que espera un valor entero.
¿Cómo obtengo el valor entero bit a bit a mi enum/indicador para poder establecer los permisos modificados en la base de datos?
Solución
Pude hacerlo lanzando la variable a un int.
int newPermissions = (int)permissions.
Otros consejos
int permissionsValue = (int) permissions;