namespace Core.Common.Utils { /// /// See "Deep copy" section on http://en.wikipedia.org/wiki/Object_copy /// TODO: agree to use ICloneable as a deep clone (how deep? :)) and remove it, we don't use shallow clone so we need only 1 type of clone /// If more types of clone are needed - then it is not clone, but context-based: Import, TransformToOtherObject, etc. Then solve it at the place where this action is implemented /// public interface IDeepCloneable { /// /// Gets a deep copy of the object and its relations /// ///The object graph object DeepClone(); } }