Вы можете пометить класс как сериализуемый, используя SerializableAttribute. Тем не менее, вы все равно можете сериализовать объект без маркировки его сериализуемым. Каково влияние этого?Влияние маркировки класса <Serializable()>
ответ
Как я понимаю, вы могли бы использовать суррогат для сериализации несериализуемого объекта, но что бы побудило вас сделать это? Я не думаю, что частный член будет сериализован с использованием этого подхода. Вам, вероятно, нужен конструктор по умолчанию и т. Д.
Я предполагаю, что когда вы говорите: «Вы все равно можете сериализовать объект без маркировки его сериализуемым», вы имеете в виду, что вы выполняете сериализацию/десериализацию самостоятельно.
Добавление атрибута [Serializable] указывает на сторонний код, который может быть сериализован. Это особенно полезно, если вы хотите сохранить объект в сеансе ASP.NET или в другом инструменте (например, в кеше Memcached).
Ввод [Serializable]
на типе позволяет использовать его с [System.Runtime.Serialization][1]
API, который довольно удобно для наиболее распространенных сценариев и избавить вас от написания много повторяющегося кода для сериализации/десериализации ваших объектов, которые, как правило, громоздкие тест и склонность к ошибкам. И они получают некоторую гибкость в отношении основных механизмов хранения (например, Binary, XML, SOAP ...).
Если вы положили [Serializable]
на один из ваших типов, вы должны убедиться, что он будет сериализоваться/десериализоваться должным образом с использованием стандартных механизмов или вам необходимо реализовать ISerializble
для управления процессом самостоятельно. Вещи, которые вы должны избегать сериализации, например, свойства обработчика событий.
Прежде всего, при принятии решения о том, следует ли использовать Serializable или нет, вы получаете бесплатную сериализацию полного графа объектов (корневой объект плюс все его ассоциации и их ассоциации), что в противном случае было бы очень сложным, особенно если наследование участвует. Но для этого необходимо, чтобы у вас были все ваши типы на графике с пометкой Serializable
.
- 1. Влияние <Script>
- 2. Недостатки маркировки класса как Serializable
- 3. В C#, какова цель маркировки класса static?
- 4. return v.compareTo (w) <0; какое влияние оказывает «<0»?
- 5. Влияние виртуального на использование члена шаблона класса
- 6. Способ маркировки
- 7. Системы маркировки
- 8. Имеет ли влияние четкий интерфейс влияние производительности?
- 9. Добавить выпадающий список выбора для маркировки класса контактная форма
- 10. R ggplot цвет маркировки временных рядов на основе класса
- 11. Содержимое маркировки/маркировки, которое изменилось с момента последнего его использования
- 12. Gmail-подобная система маркировки
- 13. МАРШРУТЫ МАРКИРОВКИ JSON
- 14. Данные для маркировки данных
- 15. Настройка политики маркировки Alfresco?
- 16. JSLint маркировки "опасный комментарий"
- 17. Избегание сохранения текстовой маркировки
- 18. Масштабируемость системы маркировки
- 19. Эмиссия маркировки d3 sunburst
- 20. Проверка недействительной маркировки
- 21. Подготовка файла маркировки SVN
- 22. маркировки vb.net с SQL
- 23. Система маркировки уровня/группы?
- 24. Система маркировки Laravel
- 25. Точки маркировки в биплоте
- 26. Сложность алгоритма маркировки дерева
- 27. Clearer маркировки с OProfile
- 28. Семантика маркировки форм
- 29. Точки маркировки на Raphael
- 30. Система маркировки фотографий
Совпадает очень хорошо ... http: //stackoverflow.com/questions/2595104/why-do-you-have-to-mark-a-class-with-the-attribute-serializable – 2010-11-22 22:15:26