Если вы управляете объектной моделью, вы можете написать код, чтобы сделать это, но это требует много обслуживания. Однако существует множество проблем, которые означают, что если вам не нужна абсолютно самая быстрая производительность, то сериализация часто является наиболее управляемым ответом.
Это один из случаев, когда BinaryFormatter
работает приемлемо; обычно я не фанат (из-за проблем с версиями и т. д.), но поскольку сериализованные данные предназначены для немедленного использования, это не проблема.
Если вы хотите немного быстрее (но без собственного кода), тогда protobuf-net
может помочь, но требует изменения кода (для добавления необходимых метаданных и т. Д.). И это на основе дерева (не на основе графа).
Другие сериализаторы (XmlSerializer
, DataContractSerializer
) также хороши, но если для клона это просто , они могут не предлагать намного больше BinaryFormatter
(кроме, возможно, XmlSerializer
не Т нужно [Serializable]
.
Так что на самом деле, это зависит от ваших конкретных классов и сценария.