2017-08-28 90 views
0

設置屬性的一部分從基抽象類我有一個抽象類作爲我的基類從類導出。我怎麼能覆蓋setDrawingType屬性在子類覆蓋在子類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)你'A'類沒有按」 t從聲明中看起來非常抽象,2)屬性是'Type',而不是'DrawingType',3)將'Type'屬性標記爲'virtual',以便覆蓋它。你需要重寫get和set。你不能只挑一個。 – itsme86

+1

除了@ itsme86的建議之外,您還可以創建一個虛擬方法並將屬性設置爲private,然後只通過虛擬方法進行設置,您可以從子類中重寫此設置,只是替代方法,更喜歡第一種解決方案。 .. – CodexNZ

+0

@CodexNZ謝謝,實際上這就是我現在正在做的方式。 – Vahid

回答

0

你的類應該如下所示:

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 
     } 
    } 
} 

如果基類沒有實現,你可以使用

abstract class A 
{ 
    protected DrawingType m_type; 

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

不,「A」類中的屬性應該是「虛擬」的,而不是「抽象的」。你不能有一個具有實現的'abstract'類成員。 – itsme86

+1

我的不好,已更新 –