0

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

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

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

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

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

感谢您的关注

4

2 回答 2

4

您不能直接将 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 的倍数)。

于 2010-03-16T18:18:33.917 回答
0

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

于 2010-03-16T17:49:52.083 回答