Перед завершением анализа был обнаружен конечный поток

Это снова я, и у меня есть другая проблема. Где-то я нашел следующий код:

private T DeepDeserialize<T>(string fileName)
    {
        T returnValue;
        using (FileStream str = new FileStream(fileName, FileMode.Open))
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            returnValue = (T)binaryFormatter.Deserialize(str);
        }
        return returnValue;
    }

Сегодня я изменил некоторые классы, и теперь он всегда выдает ошибку, которую можно перевести так: Before completing the analysis was detected ending stream (Я не знаю правильный перевод, сообщение об ошибке на моем языке, а не на английском)

Я пытался вставить str.Position = 0; между этими двумя линиями в using, который я нашел где-то здесь, но это не помогает.

Может кто-нибудь помочь мне заставить это работать снова? Понятия не имею, что делать...

1 ответ

Решение

Вы изменили двоичный формат ваших файлов, но, скорее всего, пытаетесь десериализовать старые файлы. Это не сработает. Сначала вы должны сериализовать новые версии.

PS Если вы рассмотрите возможность создания версий и пользовательского форматера на ранних этапах, вы сможете десериализовать старые данные с новыми классами, в зависимости от того, насколько радикальными были ваши изменения

Другие вопросы по тегам