2011-11-22 60 views
2

我的任務是序列化和反序列化一個對象。.NET中的序列化

我想知道:

  • 無論我的對象序列化的方式,我做
  • 我怎麼知道,我的對象是被序列化或反序列化

而不是傳遞Serialize方法中的對象,我通過object.properties。這是否以任何方式影響它?

FileStream fs = new FileStream(@"D:\Rough Work\Serialization\Serialization\bin\Debug\Log.txt",FileMode.OpenOrCreate); 
Laptop obj = new Laptop(); 
obj.Model = 2; 
obj.SerialNumber = 4; 
BinaryFormatter formatter = new BinaryFormatter(); 
formatter.Serialize(fs, obj.Model); 
formatter.Serialize(fs, obj.SerialNumber); 

[Serializable] 
class Laptop 
{ 
    public int Model; 
    public int SerialNumber; 
} 

回答

5
  • 如果能成功反序列化一個對象,那麼你正確的序列化它。
  • 您不需要單獨序列化屬性。你可以序列化整個對象並以同樣的方式對它進行反序列化。

    using (var fs = new FileStream(@"D:\Rough Work\Serialization\Serialization\bin\Debug\Log.txt",FileMode.OpenOrCreate)) 
    { 
        var formatter = new BinaryFormatter(); 
        formatter.Serialize(fs, obj); 
    } 
    
    using (var fs = new FileStream(@"D:\Rough Work\Serialization\Serialization\bin\Debug\Log.txt",FileMode.OpenOrCreate)) 
    { 
        var formatter = new BinaryFormatter(); 
        obj = formatter.Deserialize(fs) as Laptop; 
    } 
    

如果你的問題是如何將筆記本電腦類知道它正在被序列化,那麼你可能要實現ISerializable接口。

BinaryFormatter.Deserialize

+0

好吧,這是我的中期論文中的問題。我通過在desirialize方法中傳遞obj.Properties來以這種方式反序列化一個對象。 –

+0

@AbidAli如果你序列化屬性,那麼你也必須以同樣的方式反序列化它們。這兩種情況下的序列化文件是不同的。 –

0

可以轉換爲串行方法爲字符串,並輸出到調試窗口

0

我想知道: 無論我的目標是在我做的方式連載它

然後,你可以使用XML序列化,這種方式,你可以檢查你的序列化的對象,因爲它將以人類可讀的形式。