C#创建具有重命名字段的struct(继承或其他)版本

时间:2017-08-23 11:19:18

标签: c# inheritance struct alias

假设我有一个C#结构,我想在其中创建一个功能相同的派生版本,但重命名了一些属性或函数。如何才能最好地使派生版本更糟糕并避免代码重复?

更具体地说,我有一个带有属性X,Y,Z和大量函数的struct Vector3,并希望有一个structLlaVec,其属性名称已更改为Longitude,Latitude和Altitude,可能还有这些文档的文档属性发生了变化。

除了复制struct的实现之外,还有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:3)

不要使用继承,而是使用封装。

换句话说,创建一个包装结构的新类型,并将新函数或属性委托给包装结构的属性。

例如:

struct LlaVec
{
    private readonly Vector3 _v;

    public LlaVec( Vector3 v ) 
    {
        _v = v;
    }

    public int Altitude { get { return _v.Z; }}
}