Gad*_*esh 17 c# deep-copy cloning
鉴于以下课程:
class A
{
public List<B> ListB;
// etc...
}
Run Code Online (Sandbox Code Playgroud)
哪个B是可以继承/包含其他类的另一个类.
鉴于这种情况:
A 是一个大类,包含许多引用类型B,[Serializable]因为我无法访问源代码B以下执行深度复制的方法不起作用:
ICloneable或MemberwiseClone作为类A包含许多引用类型A,因为类很大并且不断被添加到,并且包含B无法深度复制的类(如)B,没有可用的源代码)[Serializable]我怎样才能深造课A?
我无论如何都停止使用序列化进行深度复制,因为没有足够的控制(不是每个类都需要以相同的方式复制).然后我开始实现自己的深层复制接口,并以应该复制的方式复制每个属性.
复制引用类型的典型方法:
例:
class A
{
// copy constructor
public A(A copy) {}
}
// a referenced class implementing
class B : IDeepCopy
{
object Copy() { return new B(); }
}
class C : IDeepCopy
{
A A;
B B;
object Copy()
{
C copy = new C();
// copy property by property in a appropriate way
copy.A = new A(this.A);
copy.B = this.B.Copy();
}
}
Run Code Online (Sandbox Code Playgroud)
你可能认为这是一项巨大的工作.但最后,它很简单直接,可以在需要的地方进行调整,并完全满足您的需求.