我可以将BitArray序列化为XML吗?

时间:2010-03-16 17:37:56

标签: c# serialization xml-serialization bitarray

我有一个业务类,我需要序列化为xml。它有一个BitArray属性。

我用[XmlAttribute]修饰了它,但序列化失败了

要成为XML可序列化,从ICollection继承的类型必须在其继承层次结构的所有级别都具有Add(System.Boolean)的实现。 System.Collections.BitArray没有实现Add(System.Boolean)。

我不确定它是否可以序列化为xml?

如果不是序列化BitArray的有效方法

感谢您寻找

2 个答案:

答案 0 :(得分:3)

您无法直接将BitArray序列化为XML。原因是为了反序列化它,你需要一个BitArray不提供的Add方法。

但是,您可以将其复制到可以序列化的数组中:

BitArray ba = new BitArray(128);
int[] baBits = new int[4];  // 4 ints makes up 128 bits

ba.CopyTo(baBits, 0);
// Now serialize the array

另一种方法是反序列化数组并调用BitArray构造函数:

int[] baBits;  // This is deserialized somehow
BitArray ba = new BitArray(baBits);

如果你这样做,你会希望你的BitArray大小是字大小的倍数(即如果你使用int数组,那么你的BitArray大小应该是32的倍数。)

答案 1 :(得分:0)

作为快速和肮脏的东西,如何创建一个具有[XmlAttribute]的属性,并且它的getter通过使用静态BitArray.CopyTo方法返回从BitArray创建的数组?

相关问题