如何在覆盖基类方法时忽略基类方法中的方法调用?如下例所示,执行所有100行代码,并忽略在派生类中调用方法insideMethod1()
。有没有办法做到这一点,而无需重复代码
public class A
virtual method1(){
// 100 lines of code
insideMethod1();
}
public class B : A
override method1(){
// call the 100 lines of code but ignore calling insideMethod1()
}
答案 0 :(得分:4)
你可以相反地做 - 覆盖insideMethod1
以便它不会做任何事情:
public class A
{
public void method1() {
// 100 lines of code
insideMethod1();
}
protected virtual void insideMethod1() { /* some work here */ }
}
public class B : A
{
protected override void insideMethod1() { }
}
进一步阅读:Template Method Pattern
答案 1 :(得分:0)
我对c#不太熟悉,但我认为你可以将bool参数传递给函数,该函数决定你是否调用嵌套函数。
public class A
virtual method1(bool callInsideMethod = true){
// 100 lines of code
if(callInsideMethod)
insideMethod1();
}
public class B : A
override method1(bool callInsideMethod = false){
// call the 100 lines of code but ignore calling insideMethod1()
}