Есть ли ярлык для двоичного сериализации каждого свойства в объекте?
-
26-09-2019 - |
Вопрос
Если есть объект, в котором Каждая публичная собственность должна быть сериализована и свойства просты (просто номера или строки или объекты, уже реализующие ISerializable
), есть ли простой способ сделать это без необходимости создавать GetObjectData(SerializationInfo info, StreamingContext context)
и конструктор принимает SerializationInfo
Как аргумент каждый раз?
Я знаю, что это можно сделать вручную с отражением, но есть ли магический метод внутри .NET Framework, чтобы сделать это?
Так что правильный ответ:
Не пытайтесь реализовать Iserializable - это для пользовательской сериализации. Вместо этого добавьте атрибут [Serializable] прямо перед декларацией класса.
Решение
Попробуйте классу бинарформисно - должен делать то, что вам нужно
Редактировать: Вы не получаете от 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();