2011-11-22 54 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序列化,这种方式,你可以检查你的序列化的对象,因为它将以人类可读的形式。