C# 我可以将位数组序列化为XML吗?
我有一个需要序列化为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]的属
[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的倍数)