When working on some sort of data-driven project, I frequently have the need to allow deep-copying of data objects. There are several patterns that accomplish this, but I've settled on one in particular.
Most .NET developers are probably familiar with the ICloneable
interface. While this is a good starting ...