C#中的通用深度复制用于用户定义的类
这个问题在这里已经有了答案:
尝试为每个类使用复制构造函数,以克隆所有的字段。 您可能还需要引入一个接口,例如称为IDeepCloneable
的接口,该接口强制类实现调用复制构造函数的方法DeepClone()
。 为了克隆类型安全而不需要转换,可以使用自引用结构。
看看下面的内容:
interface IDeepCloneable<out T>
{
T DeepClone();
}
class SomeClass<T> : IDeepCloneable<T> where T : SomeClass<T>, new()
{
// copy constructor
protected SomeClass(SomeClass<T> source)
{
// copy members
x = source.x;
y = source.y;
...
}
// implement the interface, subclasses overwrite this method to
// call 'their' copy-constructor > because the parameter T refers
// to the class itself, this will get you type-safe cloning when
// calling 'anInstance.DeepClone()'
public virtual T DeepClone()
{
// call copy constructor
return new T();
}
...
}
链接地址: http://www.djcxy.com/p/40769.html