我有一個擁有繼承的抽象類。在父方法中,我檢查一些條件,如果它們發生,Child方法應該停止運行。但return
後,孩子繼續它的代碼!這些方法應該是無效的。 另外我試過throw new Exception();
但沒有工作。在抽象中停止繼承方法
public abstract class ParentClass
{
public virtual void Method()
{
if (true)
{
// do something
Console.WriteLine("Parent Method should stop it's child!");
return; /* So the child should be stopped to call it's things*/
// Also checked by throw exception.
}
}
}
而且在ChildClass
public class ChildClass :ParentClass
{
public override void Method()
{
base.Method(); // Also checked by try/catch
Console.WriteLine("Should't be run");
}
}
所以,我該怎麼辦,像這樣(家長控制孩子進程繼續與否)?
重寫意味着孩子可以爲所欲爲。他們甚至不需要*調用'base.Method()'。你可能應該公開一個受保護的getter/method來返回孩子是否需要工作。 – Rob
爲什麼你認爲你的孩子的方法不應該被稱爲?您只是退出父級方法,無論如何都會調用子方法。 – ckruczek
'return'語句只從當前方法返回,所以在你的情況下從'ParentClass'聲明的方法返回。但是這不會阻止在調用方法('ChildClass.Method()')中執行任何進一步的語句。 – bassfader