0

又是我,我还有另一个问题。在某处,我发现了以下代码:

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,我在这里的某个地方找到了,但这没有帮助。

有人可以帮我让它再次工作吗?我不知道该怎么办...

4

1 回答 1

1

您已更改文件的二进制布局,但很可能试图反序列化旧文件。这是行不通的。您必须先序列化新版本。

PS 如果您在早期阶段考虑版本控制和自定义格式化程序,您可能能够使用新类反序列化旧数据,具体取决于您的更改有多大

于 2016-12-02T21:17:25.327 回答