Ответ 1
Попробуйте установить позицию в 0 вашего потока и не используйте свой объект, кроме типа объекта.
BinaryFormatter b = new BinaryFormatter();
s.Position = 0;
return (YourObjectType)b.Deserialize(s);
Я пытаюсь десериализовать поток, но я всегда получаю эту ошибку "Конец потока, встречающегося до завершения синтаксического анализа"?
Вот код:
//Some code here
BinaryFormatter b = new BinaryFormatter();
return (myObject)b.Deserialize(s);//s---> is a Stream object that has been fill up with data some line over here
У кого-нибудь есть идеи?
Попробуйте установить позицию в 0 вашего потока и не используйте свой объект, кроме типа объекта.
BinaryFormatter b = new BinaryFormatter();
s.Position = 0;
return (YourObjectType)b.Deserialize(s);
Убедитесь, что сериализация завершена, и что тип сериализации соответствует типу де-сериализации (т.е. убедитесь, что вы сериализуетесь с помощью BinaryFormatter, если вы дезацинируете с помощью одного). Кроме того, убедитесь, что поток, который вы сериализовали, чтобы действительно завершить сериализацию, с Stream.Flush() или что-то в этом роде.
s.Position = 0;
это потому, что вам нужно вернуться к началу, чтобы начать копирование данных по массиву!
В моем случае я использовал:
stream.Seek(0, SeekOrigin.Begin);
после того, как я сериализовал поток, и до того, как я десериализовал поток, вы можете использовать обаяние. надеюсь, что это поможет!
У меня было такое же исключение, пока я не добавил тег [Serializable] в класс I, который был Serializing:)
Тогда все сработало отлично.