2017-08-23 1 views
0

Angenommen, ich habe eine C# -Struktur, von der ich eine abgeleitete Version erstellen möchte, die funktional äquivalent ist, aber einige Eigenschaften oder Funktionen umbenannt hat. Wie würde ich das am besten tun, um die abgeleitete Version nicht schlechter laufen zu lassen und Code-Duplizierung zu vermeiden?C# create Version der Struktur (Vererbung oder sonst), die Felder umbenannt hat

Um genauer zu sein, habe ich eine Struktur Vector3 mit den Eigenschaften X, Y, Z und viele Funktionen und möchte eine structLlaVec mit den Namen der Eigenschaften in Länge, Breite und Höhe geändert haben, möglicherweise auch die Dokumentation von Diese Eigenschaften haben sich geändert.

Gibt es eine andere Möglichkeit, als die Implementierung der Struktur zu duplizieren, um dies zu tun?

+0

Welche Art und Weise suchen Sie? Etwas was automatisch "Look, X ist Longtitude" bestimmt? – Sinatr

+3

Sie können Strukturen in C# –

+0

nicht erben. Nein - Sie müssen eine neue Struktur auf die eine oder andere Weise erstellen. Sie können benutzerdefinierte Konvertierungsoperatoren bereitstellen, um nahtlos von einem 'Vector3' zu Ihrer Struktur (und umgekehrt) zu wechseln, aber diese Konvertierung hat Auswirkungen auf die Leistung, wenn sie häufig ausgeführt werden. –

Antwort

3

Verwenden Sie keine Vererbung, sondern verwenden Sie die Kapselung.

Mit anderen Worten, erstellen Sie einen neuen Typ, der die Struktur, die Sie haben, umschließt und Ihre neuen Funktionen oder Eigenschaften an die Eigenschaften der umhüllten Struktur delegiert.

Zum Beispiel:

struct LlaVec 
{ 
    private readonly Vector3 _v; 

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

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

Ich dachte daran, bin aber besorgt über die verschlechterte Leistung. Würde solch eine Immobilie immer noch inline sein? – user1282931

+0

Sorgen Sie sich um die Leistung, wenn Sie eine funktionierende Lösung haben. 1. Mach es. 2. Lass es funktionieren. 3. Lass es richtig funktionieren. 4. Lassen Sie es schnell arbeiten. – Fildor

Verwandte Themen