【问题标题】:Can I serialize a BitArray to XML?我可以将 BitArray 序列化为 XML 吗?
【发布时间】:2011-01-28 05:47:24
【问题描述】:
我有一个需要序列化为 xml 的业务类。它有一个 BitArray 属性。
我用[XmlAttribute] 装饰了它,但是序列化失败了
要实现 XML 可序列化,从 ICollection 继承的类型必须在其继承层次结构的所有级别上都有 Add(System.Boolean) 的实现。 System.Collections.BitArray 没有实现 Add(System.Boolean)。
我不确定是否可以序列化为 xml?
如果不是,那么序列化 BitArray 的有效方法是什么
感谢收看
【问题讨论】:
标签:
c#
serialization
xml-serialization
bitarray
【解决方案1】:
您不能直接将 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 的倍数)。
【解决方案2】:
作为一个快速而肮脏的东西,如何创建一个具有 [XmlAttribute] 的属性,它的 getter 返回一个使用静态 BitArray.CopyTo 方法从您的 BitArray 创建的数组?