How do you implement prototype pattern in .NET?
The Cloning is achieved by using the ICloneable of the System namespace. It has a "Clone" method that actually returns the reference of the similar copy. The Clone method allows a Shallow copy and not a deep copy. In the Shallow copy if you made changes to the cloned object it actually changes on the main object . So how is deep copy achieved, by using the "ISerializable" interface? So what do you do is the first serialize the object then deserialize back to a complete new copy. Any changes to this new copy do not reflect on the original copy of the object, this is known as Deep copy.