2016-12-02 102 views
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,我在这里找到了某处,但它没有帮助。

有人可以帮助我使它重新工作吗?我不知道该怎么办...

+1

如果您修改了类,则无法从旧文件反序列化它们,您将不得不先序列化他们 –

+0

哦,谢谢!我忘了重拍我的档案:-)多么愚蠢的错误,对吧?再次感谢。我可以要求你重新发布这篇文章的答案,所以我可以将其标记为答案? :-) – SoptikHa

+0

当然,有一些限制,我必须等待几分钟才能接受 – SoptikHa

回答

1

你已经改变了你的文件的二进制布局,但最有可能试图反序列化旧文件。这不会奏效。你必须首先序列化新版本。

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

相关问题