C#中的深度克隆类和子类

Deep clone class and subclasses in C#

本问题已经有最佳答案,请猛点这里访问。

我最近发现memberwise克隆一个类似乎并不克隆它的子类(在其中定义的类)。他们似乎仍然被视为指针。有什么方法可以克隆具有所有子类的整个类吗?


用这种东西

1
2
3
4
5
6
7
8
9
10
11
12
public object Clone()
{
    using (var memStream = new MemoryStream())
    {
        var binaryFormatter = new BinaryFormatter(
           null,
           new StreamingContext(StreamingContextStates.Clone));
        binaryFormatter.Serialize(memStream, this);
        memStream.Seek(0, SeekOrigin.Begin);
        return binaryFormatter.Deserialize(memStream);
    }
}