Given the following class:
class A
{
public List<B> ListB;
// etc...
}
where B is another class that may inherit/contain some other classes.
Given this scenario:
Ais a large class and contains many reference types- I cannot mark
Bas[Serializable]as I don’t have access to source code ofB
The following methods to perform deep copying do not work:
- I cannot use
ICloneableorMemberwiseCloneas classAcontains many reference types - I cannot write a copy constructor for
A, as the class is large and continuously being added to, and contains classes (likeB) that cannot be deep copied - I cannot use serialization as I cannot mark a contained class (like
B, where no source code available) as[Serializable]
How can I deep copy class A?
I stopped using serialization for deep copying anyway, because there is not enough control (not every class needs to be copied the same way). Then I started to implement my own deep copy interfaces and copy every property in the way it should be copied.
Typical ways to copy a referenced type:
Example:
You may think that this a huge amount of work. But at the end, it is easy and straight forward, can be tuned where needed and does exactly what you need.