我有以下想做深层复制的类。包含界面的深度复制对象
public class KeyInfo
{
public KeyInfo(IKeySetup keySetup, IKeyData data)
{
KeySetup = keySetup;
Data = data;
}
public IKeySetup KeySetup { get; set; }
public IKeyData Data { get; set; }
public KeyInfo DeepCopy()
{
var keyInfo = (KeyInfo) this.MemberwiseClone();
return keyInfo;
}
}
如何复制接口?我是否必须为接口实现ICloneable,然后让每个接口中的一个实现Clone()?有没有办法避免每个班级必须实施这样的功能?
我想你的接口想暴露一个'DeepCopy'方法(而不是使用ICloneable,因为它不会推断它是浅层还是深层拷贝,也不是类型安全的)。你的'KeyInfo'类如何深度复制'SomeOtherCrazyIKeySetupImplementation'?您可以序列化/反序列化副本,但这取决于您的设计和实现。 – 2012-08-13 21:07:28
@ChrisSinclair Plus,它将取决于接口是否可以连续化!递归属性或无限循环属性会在序列化练习中产生一个凹痕= D – Tejs 2012-08-13 21:09:50
至于OP,听起来您可能想要实现实现接口的结构。这样,作为值类型,它们可以被简单地复制。不知道如果有帮助。 – Tejs 2012-08-13 21:10:44