假设我有一个C#结构,我想在其中创建一个功能相同的派生版本,但重命名了一些属性或函数。如何才能最好地使派生版本更糟糕并避免代码重复?
更具体地说,我有一个带有属性X,Y,Z和大量函数的struct Vector3,并希望有一个structLlaVec,其属性名称已更改为Longitude,Latitude和Altitude,可能还有这些文档的文档属性发生了变化。
除了复制struct的实现之外,还有什么方法可以做到这一点吗?
答案 0 :(得分:3)
不要使用继承,而是使用封装。
换句话说,创建一个包装结构的新类型,并将新函数或属性委托给包装结构的属性。
例如:
struct LlaVec
{
private readonly Vector3 _v;
public LlaVec( Vector3 v )
{
_v = v;
}
public int Altitude { get { return _v.Z; }}
}