It is completely impossible to deep-copy an arbitrary object.
For example, how would you handle a Control
or a FileStream
or an HttpWebResponse
?
Your code cannot know how the object works and what its fields are supposed to contain.
Do not do this.
It’s a recipe for disaster.