2009-09-16 2 views
4

Может ли кто-нибудь сказать мне, как я могу преобразовать байт [] в ArrayList с помощью C# под Windows Mobile?байт [] в ArrayList?

Позже изменения:

  1. это пойти бы как иметь ArrayList, содержащий экземпляры пользовательского типа. Этот список относится к базе данных (в блобе) в виде байтового массива (преобразование выполняется API базы данных); Я хочу вернуть байт [] в ArrayList;

  2. . NET CF не предоставляет BinaryFormatter;

+0

Спасибо за быстрые ответы! Фактически, байт [] представляет сериализованный ArrayList; т.е. я не хочу преобразовывать массив байтов в ArrayList из байтов – thelost

+2

. С каким форматом вы сериализовали его? Я испытываю соблазн принять BinaryFormatter, но это тоже не совсем правильно. Возможно, просто покажите код, который создал массив в первую очередь. –

+0

Я получаю байт [] из базы данных BLOB – thelost

ответ

13

Все массивы наследуют от ICollection, так что вы можете просто использовать

ArrayList list = new ArrayList(bytearray); 

хотя я бы использовать общий список < байт > себя, используя тот же метод, как и что мешает бокс каждого значения байта в массив. Хотя массивы не статично наследуют общий IList для соответствующего типа, CLR добавляет соответствующие реализации к каждому экземпляру массива во время выполнения (см. Важное примечание here)

+0

Что вы подразумевали под «преобразованием байта [] в ArrayList»? – thecoop

+0

Я думаю, что @net имеет массив байтов, представляющий сериализованный экземпляр ArrayList, и хочет десериализовать байты в экземпляр ArrayList. –

+0

Да, это правильно – thelost

3

Не можете ли вы это сделать?

ArrayList list = new ArrayList(byteArray); 
2

ArrayList нетипизирован и должен использоваться только для совместимости.

Я предлагаю вам использовать список < байт >:

var list = new List<byte>(byteArray); 

Edit: Если API базы данных выполняет преобразование, она не должна предоставлять способ десериализации? Попробуйте использовать Reflector, чтобы узнать, как он преобразуется.

0

Кажется, что CF не поддерживает BinaryFormatter. Вы управляете компонентом, который отправляет эти двоичные данные? Не можете ли вы преобразовать данные в Xml в этот компонент? Если вы не взгляните на Compact Formatter

+0

BinaryFormatter недоступен в редакции CF – thelost

+0

Я не могу его контролировать. API-интерфейс базы данных выполняет преобразование. – thelost

Смежные вопросы