2012-12-20 158 views
1

我有虛擬方法的基類。我有孩子類,它已覆蓋此方法。然後我有孩子的孩子,但我怎麼可以重寫相同的方法?如果我嘗試向第二類添加'虛擬',我會收到消息:'覆蓋方法不能被標記爲虛擬'。如果我嘗試向第三類添加'覆蓋',我會得到以下消息:'這是不適合覆蓋的方法'。如何覆蓋非虛擬方法?

如何解決此問題?

我可以從第一個繼承第三個類,但實際上我想從第二個類繼承一些方法。

public virtual T Save (T entity) 
     { 
      //removed code 

      return entity; 
     } 

public override T Save(T entity) 
     { 
      //removed code 

      return entity; 
     } 

public T Save(T entity) 
     { 
      return entity; 
     } 

enter image description here

+0

請問你能顯示所有三個簽名嗎? –

+1

在孩子上指定'override'應該可以。你確定簽名是一樣的嗎?你可以從每個班發佈有問題的方法嗎? – Bobson

+0

添加的代碼(問題) – Alexan

回答

6

只是覆蓋它(在 「孩子的孩子」)。重寫方法是隱式虛擬的。

+0

但如果我不能添加重寫? – Alexan

+0

你是什麼意思,如果你「不能添加覆蓋」? –

+0

我有錯誤消息,如果我試圖添加它。其實類聲明是不正確的,當我修復它時,它正在工作。 – Alexan