Сериализация и десериализация объектов в C#

Сериализация - это процесс преобразования объекта в последовательный поток-подобный формат. Часто это означает преобразование его в XML-данные для хранения или передачи по сети.

Deserialization - это процесс использования сериализации для восстановления исходного объекта.

Базовая сериализация в C# относительно проста. Сначала создайте класс, который вы хотите сериализовать и украсить его с помощью атрибута Serializable. Определите свойства класса, как обычно. Обратите внимание, что класс должен быть public и должен иметь пустой конструктор по умолчанию, который не принимает никаких параметров. Без этих двух функций сериализатор не может создавать объекты.

В следующем коде показан класс Person этого примера.

Следующий код показывает, как программа сериализует объект Person.

Сначала код создает новый объект Person, передавая его конструктору значения, введенные в текстовые поля программы. Затем он создает объект XmlSerializer, передавая его конструктору тип объекта, который он будет сериализовать: Person.

Далее код создает объект StringWriter, чтобы он мог сериализоваться в строку. Если вы хотите, вы можете сериализовать другие объекты потока, такие как потоки файлов.

Код вызывает метод Serialize сериализатора, передавая ему поток для сериализации (StringWriter) и объект Person для сериализации , Программа отображает сериализацию в текстовом поле txtSerialization.

В следующем тексте показана результирующая сериализация. Обратите внимание, что сериализатор автоматически использует имена открытых переменных объекта Person как теги в полученном XML.

Следующий код показывает, как программа десериализует сериализацию для воссоздания объекта Person.

Код создает новый объект XmlSerializer для Person, как и раньше. Он создает инициализацию StringReader для хранения ранее созданной сериализации.

Источник: http://csharphelper.com/blog/2016/01/serialize-and-deserialize-objects-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *