2

我的任务是序列化和反序列化一个对象。

我想知道:

  • 我的对象是否以我正在做的方式序列化
  • 我如何知道我的对象正在被序列化或反序列化

我没有在序列化方法中传递对象,而是传递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;
}
4

3 回答 3

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

于 2011-11-22T10:42:33.563 回答
0

我想知道:我的对象是否以我正在做的方式序列化

然后你可以使用 xml 序列化,这样你就可以检查你的序列化对象,因为它将是人类可读的形式。

于 2011-11-22T12:09:10.380 回答
0

您可以将序列化方法转换为字符串并将其输出到调试窗口

于 2011-11-22T10:43:00.097 回答