2

私の仕事は、オブジェクトをシリアル化および逆シリアル化することでした。

私は知りたいです:

  • 私のオブジェクトが私がやっている方法でシリアル化されているかどうか
  • オブジェクトがシリアル化または逆シリアル化されていることを知る方法

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;
}
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

シリアル化されたメソッドを文字列に変換し、デバッグ ウィンドウに出力できます。

于 2011-11-22T10:43:00.097 に答える
0

知りたい: オブジェクトが私のやり方でシリアライズされているかどうか

次に、xmlシリアライゼーションを使用できます。これにより、シリアライズされたオブジェクトは人間が読める形式になるため、チェックできます。

于 2011-11-22T12:09:10.380 に答える