Что это?
Когда вы создаете объект в приложении .Net Framework, вам не нужно думать о том, как данные хранятся в памяти. Потому что .Net Framework позаботится об этом за вас. Однако, если вы хотите сохранить содержимое объекта в файл, отправить объект другому процессу или передать его по сети, вам нужно подумать о том, как представлен объект, потому что вам нужно будет преобразовать его в другой формат. , Это преобразование называется СЕРИАЛИЗАЦИЯ.
Использование для сериализации
Сериализация позволяет разработчику сохранять состояние объекта и воссоздавать его по мере необходимости, обеспечивая хранение объектов, а также обмен данными. Посредством сериализации разработчик может выполнять такие действия, как отправка объекта в удаленное приложение с помощью веб-службы, передача объекта из одного домена в другой, передача объекта через брандмауэр в виде строки XML или поддержание безопасности или специфичных для пользователя информация между приложениями.
Применить SerializableAttribute
к типу, чтобы указать, что экземпляры этого типа могут быть сериализованы. Примените SerializableAttribute
, даже если класс также реализует интерфейс ISerializable
для управления процессом сериализации.
Все открытые и закрытые поля в типе, помеченные SerializableAttribute
, по умолчанию сериализуются, если только тип не реализует интерфейс ISerializable
для переопределения сериализации. процесс. Процесс сериализации по умолчанию исключает поля, отмеченные NonSerializedAttribute
. Если поле сериализуемого типа содержит указатель, дескриптор или некоторую другую структуру данных, специфичную для конкретной среды и не может быть разумно восстановлена в другой среде, тогда вы можете применить NonSerializedAttribute
в это поле.
Подробнее см. MSDN .
Редактировать 1
Любая причина не помечать что-либо как сериализуемое
При передаче или сохранении данных вам нужно отправлять или сохранять только необходимые данные. Таким образом, будет меньше задержек передачи и проблем с хранением. Таким образом, вы можете отказаться от ненужного фрагмента данных при сериализации.