C# 我可以将位数组序列化为XML吗?

C# 我可以将位数组序列化为XML吗?,c#,serialization,xml-serialization,bitarray,C#,Serialization,Xml Serialization,Bitarray,我有一个需要序列化为xml的业务类。它具有位数组属性 我已经用[xmldattribute]对它进行了修饰,但是序列化失败了 要使XML可序列化,从ICollection继承的类型必须在其继承层次结构的所有级别上实现Add(System.Boolean)。System.Collections.BitArray未实现添加(System.Boolean) 我不确定是否可以序列化为xml 如果不是,什么是序列化位数组的有效方法 感谢您将视为快速而肮脏的东西,创建一个具有[XmlAttribute]的属

我有一个需要序列化为xml的业务类。它具有位数组属性

我已经用
[xmldattribute]
对它进行了修饰,但是序列化失败了

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

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

如果不是,什么是序列化位数组的有效方法


感谢您将

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

作为快速而肮脏的东西,创建一个具有[XmlAttribute]的属性如何,使用静态BitArray.CopyTo方法返回从BitArray创建的数组是非常困难的。

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

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

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);

如果执行此操作,您将希望位数组大小为单词大小的倍数(即,如果使用int数组,则位数组大小应为32的倍数)。

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

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

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);
如果您这样做,您将希望您的位数组大小是单词大小的倍数(即,如果您使用int数组,那么您的位数组大小应该是32的倍数)