Ecco cosa mi è venuto in mente:
Il modo attributo Flags consisteva in diverse insidiose insidie. Ad esempio, i cambiamenti di bit sulle scritture firmate sono aritmetici, quindi il bit di segno non può essere facilmente utilizzato. Inoltre, ricostruire l'array di flag da una maschera di bit può diventare davvero un disastro, come menzionato da Blorgbeard.
Invece, ho usato la classe System.BitArray che è facilmente accessibile con gli indici. BitArray consente una facile serializzazione e deserializzazione da e verso un int. BitArray offre un metodo CopyTo () per copiare i suoi bit in un array di byte che può quindi essere convertito in un int con BitConverter.ToInt32 (). Per ricostruire il BitArray, è possibile utilizzare un costruttore che accetta un array di byte generato da BitConverter.GetBytes ().
cioè.
//Serializing 32 flags into int
BitArray bitArray = new BitArray (32);
byte[] byteBuffer = new byte[4];
bitArray.Copyto (byteBuffer, 0);
int SerializedFlags = BitConverter.ToInt32 (byteBuffer, 0);
//Reconstructing 32 flags from int
byteBuffer = BitConverter.GetBytes(SerializedFlags);
bitArray = new BitArray (byteBuffer);