.NET中的序列化

Abi*_*Ali 2 .net c# binary-serialization

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

我想知道:

  • 我的对象是否按照我正在进行的方式序列化
  • 我如何知道我的对象被序列化或反序列化

我没有在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;
}
Run Code Online (Sandbox Code Playgroud)

Muh*_*han 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;
    }
    
    Run Code Online (Sandbox Code Playgroud)

如果您的问题是Laptop类如何知道它正在被序列化,那么您可能想要实现ISerializable接口.

请参见BinaryFormatter.Deserialize