2016-12-02 101 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.如果在早期階段考慮版本控制和自定義格式化程序,則可能可以使用新類反序列化舊數據,具體取決於您的更改有多劇烈

相關問題