用于序列化/反序列化一组标志的内置类

时间:2009-06-10 19:02:17

标签: .net

我需要在字符串中存储一组标志。我正在考虑使用BitArray,但注意到没有内置方法来写入/读取char []或int []或其他东西。我可以很容易地编写这段代码,但如果有一个内置方法,我宁愿使用内置方法。

那么有内置的.NET方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

如果您的标志表示为已定义的枚举,您只需将其强制转换为枚举支持的整数类型之一(int,long等)。然后,您可以使用以下命令从其值表示中反序列化枚举:

// define a Flags enumeration...
[Flags] enum MyEnum { First = 1, Second = 2, Third = 4, };


MyEnum originalValue = MyEnum.First | MyEnum.Second;
int storedValue = (int)originalValue;  

// value serialized into storage somewhere...

// later on ...
// deserialized however you need...
int restoredValue = ReadValueFromDataStore(); 
// convert back into a typesafe enum...
MyEnum recoveredValue = Enum.Parse( typeof(MyEnum), restoredValue );

答案 1 :(得分:0)

BitConverter类具有部分功能。

答案 2 :(得分:0)

BitArray支持Int32 [],您可以使用接受int []进行初始化的constructorCopyTo(Array array, Int32 index)。根据msdn,当前的CopyTo实现支持写入Boolean [],Byte []和Int32 []。