2014-11-17 5 views
1

Если у меня есть двоичный сериализованный объект .NET (скажем, объект класса Employee) в файл. Теперь некоторые другие умные ежи решают де-сериализовать этот файл с помощью .NET-приложения, но он не знает, что файл является сериализованным объектом Employee. Смогут ли он прочитать данные из этого файла, пока он не узнает класс, объект которого был сериализован? Если да, то как?Чтение двоичного сериализованного файла без знания класса

PS - Я предполагаю, что мы можем принимать данные в массив байтов, а затем использовать его, я просто знаю, как мы будем считывать значения свойств класса employee.

ответ

1

Двоичный сериализованный объект можно десериализовать, только если вы «знаете класс», так как это часть сериализованных данных.

Если у вас нет этого класса, доступного в вашем приложении, вы не можете десериализовать этот объект с помощью двоичного сериализатора.
Вы можете alwasy читать данные как byte[], но синтаксический анализ может быть очень сложным.

Можете ли вы объяснить свою «большую картину», где вам нужна такая логика, - возможно, есть лучшее решение.

В общем случае, если вы хотите прочитать данные без сериализованного класса, вы должны использовать другой режим сериализации, например XML.

+0

большая картинка - читать двоичный файл, который у меня есть на моей машине. Я могу загрузить его в массив байтов, но поскольку я не знаю его класса, я не могу прочитать значения свойств. Звучит как интересная проблема для решения! –

+0

Итак, данные генерируются другой программой, и вы хотите ее прочитать? – ChrFin

+0

Это та же самая проблема, с которой сталкивались программисты, когда ** предполагал ** структуру двоичного файла, созданного с использованием приложения, исходный код которого был потерян. – Tarik

0

Файл может быть десериализован, если другое приложение имеет один и тот же класс.

Класс будет определяться с использованием полного имени. Таким образом, класс должен иметь одно имя, пространство имен и сборку.

Если это сильная типизированная сборка, версия должна быть такой же.

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