忽略基类方法中的方法调用

时间:2017-05-30 16:35:22

标签: c# oop

如何在覆盖基类方法时忽略基类方法中的方法调用?如下例所示,执行所有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()
}

2 个答案:

答案 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()
}