2010-10-12 1 views
1

Я наткнулся на это:глубокая копия Клонирование с помощью сериализации

http://www.codeproject.com/KB/tips/SerializedObjectCloner.aspx

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

[Serializable()] 

, а затем вызвать метод клонирования, как предложено в статье?

У меня есть сомнения, что это так просто, и мне, возможно, придется реализовать больше ?! Я подумал, что сначала попрошу экспертов, прежде чем копать все глубже.

Спасибо.

Christian

ответ

0

Ввод SerializableAttribute на классе означает, что все поля объекта (за исключением тех, кого вы атрибут с NonSerialized) будет сериализовать (и поэтому они сами должны быть сериализации). Для простых случаев достаточно, но для более сложных объектов вам может потребоваться реализация ISerializable, которая будет прозрачно работать с кодом в статье. Это очень зависит от вашей конкретной ситуации. Для простых случаев достаточно SerializableAttribute.

+0

Что делает случай простым? когда это не сработает? – cs0815

+0

Простым случаем является использование всех примитивных объектов (строк, int и т. Д.), Более сложный случай - это объект, содержащий список других пользовательских объектов, которые могут или не могут быть сериализуемыми сами по себе. – Oded

+0

Но если я помечаю все мои классы пользовательских объектов с помощью [Serializable()], я должен быть в порядке, не так ли? – cs0815