2010-05-15 52 views
8

我有一些插件风格的东西的基类,并且有一些绝对需要实现的方法。可以在虚拟方法中抛出NotImplemented异常吗?

我现在宣布这些在基类虚拟的,例如

public virtual void Save 
{ 
    throw new NotImplementedException(); 
} 

,并在descendand我有一个

public override void Save() 
{ 
    //do stuff 
} 

是它抛出一个NotImplementedException有一个好的做法呢?例如,下降类可以是用于处理不同文件格式的模块。谢谢

回答

13

通常我会希望你的基类是抽象的,并简单地推迟到继承类的实现。

public abstract class MyBase 
{ 
    public abstract void Save(); 
    ... 
} 

public class MyChild : MyBase 
{ 
    public override void Save() 
    { 
     ... save ... 
    } 

    ... 
} 
8

抽象似乎是你以后真的。

8

将它声明为抽象方法不是更好吗?

这样所有的实现类型也必须实现这个方法。

10

不是一个好主意。

通常,覆盖方法,将通过

base.Save() 

调用基类方法和将吐每一次。

所以一般来说,坏主意。在你的情况下,它看起来像抽象是更好的选择。

相关问题