我有以下想做深層複製的類。包含界面的深度複製對象
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