Tal*_*lib 6 c# methods inheritance derived base
我有一个void Action()
在派生类中重写的虚基本方法.
行动的第一步是打电话base.Action()
.如果基本方法中出现某种情况,我不希望处理其余的派生方法.
我想知道是否有一个关键字或设计模式,允许我从基本方法退出派生方法.
目前我正在考虑将void更改为bool并将其用作流控制,但我想知道是否有任何其他设计模式我可以使用.
这是一个错误的“情况”吗?如果是这样,只需让它抛出异常,并且不要在覆盖内捕获异常。
如果这不是错误情况,那么使用返回类型听起来确实是一种前进的方式,但它可能不适合您的上下文 - 我们真的不知道您想要实现什么。
另一种选择是使用模板方法模式:
public abstract class FooBase
{
public void DoSomething()
{
DoUnconditionalActions();
if (someCondition)
{
DoConditionalAction();
}
}
protected abstract void DoConditionalAction();
}
Run Code Online (Sandbox Code Playgroud)
如果您不想使基类抽象,可以将其设置为受保护的虚拟方法,该方法在基类中不执行任何操作,并在适当的情况下在派生类中重写。请注意,这里DoSomething
不是虚拟的。
如果这些选项听起来都不合适,您需要向我们提供有关您想要实现的目标的更具体信息。
不要将它与 void
返回类型一起使用,但可以这样做,比如bool
public class Base
{
public virtual bool Action()
{
..
return boolean-value.
}
}
public class Child : Base
{
public override bool Action()
{
if(!base.Action())
return false;
....
return boolean-value;
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果这是一种特殊情况,请像其他人建议的那样提出例外。
归档时间: |
|
查看次数: |
5944 次 |
最近记录: |