【问题标题】: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 创建的数组?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多