Open sandboxFocusImprove this doc

Implementing object cloning without boilerplate

The Deep Clone pattern creates a copy of an object that is completely separate from the original object, including its properties and sub-properties. Deep cloning is achieved by recursively cloning all the child objects that make up the original object, creating a new instance of each one, and assembling the parent clone from the child clones.

The Deep Clone pattern requires that you have a concept of an object tree, i.e., a concept of a child property. Objects typically have reference properties and child properties, and when deep cloning an object, only child properties should be deep cloned.

Implementing deep cloning can be error-prone and time-consuming, requiring much boilerplate code. This series of articles will show how to automate this work using an aspect, making the code more maintainable and efficient.

Warning

Deep cloning can be expensive in terms of performance, so it should be used judiciously.

Article Description
1. Getting started Gives the first working version of the Deep Clone aspect.
2. Verifying code Reports errors when the child properties are not of a cloneable type.
3. Allowing handmade customizations Adds extension points to allow for hand-made handling of properties.
4. Adding coding guidance Adds a coding guidance to the refactoring menu to help developers write the customization method.