Могу ли я сериализовать BitArray в XML?

У меня есть бизнес-класс, который мне нужно сериализовать в xml. Он имеет свойство BitArray.

Я украсил его [XmlAttribute], но сериализация не работает с

Чтобы быть XML-сериализуемым, типы, наследуемые от ICollection, должны иметь реализацию Add(System.Boolean) на всех уровнях иерархии наследования. System.Collections.BitArray не реализует Add(System.Boolean).

Я не уверен, можно ли сериализовать в xml?

Если нет, что было бы эффективным средством сериализации BitArray

Спасибо за поиск


person DevOverflow    schedule 16.03.2010    source источник


Ответы (2)


Вы не можете напрямую сериализовать 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);

Если вы сделаете это, вы захотите, чтобы размер вашего BitArray был кратен размеру слова (т. е. если вы используете массив int, то размер вашего BitArray должен быть кратен 32).

person Jim Mischel    schedule 16.03.2010

Что-то быстрое и грязное, как насчет создания свойства, которое имеет [XmlAttribute], и ​​его геттер возвращает массив, созданный из вашего BitArray с помощью статического метода BitArray.CopyTo?

person paquetp    schedule 16.03.2010