我有一个业务类,我需要序列化为xml。它有一个BitArray属性。
我用[XmlAttribute]
修饰了它,但序列化失败了
要成为XML可序列化,从ICollection继承的类型必须在其继承层次结构的所有级别都具有Add(System.Boolean)的实现。 System.Collections.BitArray没有实现Add(System.Boolean)。
我不确定它是否可以序列化为xml?
如果不是序列化BitArray的有效方法
感谢您寻找
答案 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创建的数组?