2017-08-28 3 views
0

Ich habe eine abstrakte Klasse A als meine Basisklasse, von der Klasse B herleitet. Wie kann ich die set von DrawingType Eigenschaft in der Unterklasse B außer Kraft setzen.außer Kraft setzt gesetzt Teil einer Eigenschaft von der Basis abstrakter Klasse in der Unterklasse C#

public abstract class A 
{ 
    protected DrawingType m_type; 

    public DrawingType Type 
    { 
     get { return m_type; } 
     set { m_type = value} 
    } 
} 

public B : A 
{ 
    // I want to override the 'set' of DrawingType property here. 
} 
+0

1) Ihre 'A' Klasse verwenden kann doesn keine Implementierung haben‘ t schauen sehr abstrakt von seiner Deklaration, 2) Die Eigenschaft ist 'Type', nicht' DrawingType', 3) Markieren Sie die 'Type' Eigenschaft als' virtual', damit Sie sie überschreiben können. Sie müssen sowohl get und set überschreiben. Du kannst nicht einfach einen auswählen. – itsme86

+1

Alternativ zum Vorschlag von @ itsme86 können Sie auch eine virtuelle Methode erstellen und den Eigenschaften-Setter als privat markieren. Führen Sie dann nur die Einstellung über die virtuelle Methode, die Sie von der Unterklasse überschreiben würden, nur eine Alternative, die erste Lösung vor. .. – CodexNZ

+0

@CodexNZ Danke, eigentlich ist das so, wie ich es gerade mache. – Vahid

Antwort

0

Ihre Klassen sollte wie folgt aussehen:

abstract class A 
{ 
    protected DrawingType m_type; 

    protected virtual DrawingType Type 
    { 
     get { return m_type; } 
     set { m_type = value; } 
    } 
} 

class B : A 
{ 
    protected override DrawingType Type 
    { 
     get 
     { 
      return m_type; 
     } 
     set 
     { 
      m_type = //custom logic goes here 
     } 
    } 
} 

Wenn die Basisklasse Sie

abstract class A 
{ 
    protected DrawingType m_type; 

    protected abstract DrawingType Type { get; set; } 
} 
+0

Nein, die Eigenschaft in der Klasse "A" sollte "virtuell" und nicht "abstrakt" sein. Sie können kein abstraktes Klassenmitglied mit einer Implementierung haben. – itsme86

+1

mein schlechtes, aktualisiert –

Verwandte Themen