ICloneable
(due to the fact that it does not differentiate between Deep Copy or Shallow Copy)을 구현하는 것이 권장되지 않는다는 것을 알게되었으므로이를 추상화 또는 인터페이스로 구현해야하는지 판단하려고합니다.사용자 정의 복제/복사 기능 구현 : 추상화 또는 인터페이스?
내 구현이 거의 동일하게 유지 될 것이라고 생각합니다. binary deep copy 및 MemberwiseClone
shallow copy, 그래서 결국 나는 추상적 인 방법이 이상적이라고 느꼈다. 그러나, 내 이해는 또한 C#이 복수 상속을하지 않기 때문에, 다른 추상 클래스를 사용해야 할 경우 더 이상 할 수 없습니다.
그런 경우에는 사용자 정의 ICloneable
(예 : ICustomCloneable
)을 사용하는 것이 더 나은 옵션이 될 수 있다고 생각하지만, 구현이 여러 클래스에서 사실상 동일하다면 코드 재사용을 적절하게 활용하지 못하고있는 것처럼 느껴집니다. .
사실 복제 가능 클래스에서 더 중요한 것들에 대해 추상 상속을 유지하기위한 인터페이스를 사용하는 것이 유효합니까? 아니면 다른 방법이 있습니까?
또는 다른 초록을 구현하기 위해 초록이 유효합니까 (읽기 : 아닌지)? 이것은 CloneCapable 클래스와 다른 추상을 구현하지 못하게하는 단일 상속을 해결하는 것으로 추측되지만, 의심 스러울 수도 있습니다. 예 :
public abstract class CloneCapable
{
public object ShallowCopy()
{
// implementation
}
public object DeepCopy()
{
// implementation
}
}
public abstract class ClassA : CloneCapable {}
// abstract-abstract since I can't do ClassB : ClassA, CloneCapable
public abstract class ClassB : ClassA {}
큰 통찰력, 감사합니다. – Arclight