Есть ли ярлык для бинарной сериализации каждого свойства объекта? - PullRequest
2 голосов
/ 07 августа 2010

Если есть объект, в котором каждое открытое свойство должно быть сериализовано , а свойства просты (только числа, строки или объекты, уже реализующие ISerializable), есть ли простой способ сделать это без создать GetObjectData(SerializationInfo info, StreamingContext context) и конструктор, принимающий SerializationInfo в качестве аргумента каждый раз?

Я знаю, что это можно сделать вручную с помощью отражения, но есть ли в .NET Framework магический метод для этого?


Итак, правильный ответ:

Не пытайтесь реализовать ISerializable - он предназначен для пользовательской сериализации. Вместо этого добавьте атрибут [Serializable] прямо перед объявлением класса.

1 Ответ

4 голосов
/ 07 августа 2010

Попробуйте класс BinaryFormatter - следует делать то, что вам нужно

РЕДАКТИРОВАТЬ: вы не наследуете от BinaryFormatter - это служебный класс, который вы используете для сериализации.Вот пример, скопированный из документов

MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
...