Сериализация в .NET - PullRequest
       29

Сериализация в .NET

2 голосов
/ 22 ноября 2011

Моей задачей было сериализовать и десериализовать объект.

Я хочу знать:

  • сериализуется ли мой объект так, как я это делаю
  • Как я узнаю, что мой объект сериализуется или десериализуется

Вместо передачи объекта в методе сериализации я передаю 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;
}

Ответы [ 3 ]

5 голосов
/ 22 ноября 2011
  • Если вы можете успешно десериализовать объект, вы правильно его сериализовали.
  • Вам не нужно сериализовать свойства по отдельности. Вы можете просто сериализовать весь объект и десериализовать его таким же образом.

    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. Дезериализация

0 голосов
/ 22 ноября 2011

Я хочу знать: Является ли мой объект сериализованным так, как я это делаю

Затем вы можете использовать сериализацию xml, чтобы проверить сериализованный объект, так как он будет в читабельной форме.

0 голосов
/ 22 ноября 2011

Вы можете преобразовать в сериализованный метод строку и вывести ее в окно отладки.

...