2012-12-20 123 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