public abstract class Base {
public void execute() {
//'preexecute code'
child.execute();
//'postexecute code'
}
}
public class Child : Base {
{
public void execute() {
//'Some child specific code'
}
}
在C#中是否有任何方法可以支持上面的执行模型,您可以从基类中调用子类中的函数。 “预执行代码”和“后执行代码”很常见,每次调用“执行”时都应该运行。
答案 0 :(得分:10)
我建议你从基地调用一个抽象方法(称为Template Method Pattern):
abstract class Base {
void Foo() {
DoSomething();
Bar();
DoSomethingElse();
}
protected abstract void Bar();
}
class Child : Base {
protected override void Bar() {
DoSomethingChildSpecific();
}
}
您可以为每个孩子在Bar
(Template Method Pattern中的原语操作)中实现一个非常特定的部分,Base
在右边调用它上下文。因此,消费者不能搞砸执行序列Foo
,不像他们能够覆盖Foo
本身。
答案 1 :(得分:0)
我想你正在寻找
public abstract class Base {
public abstract void execute();
}
public class Child : Base {
{
public override void execute() {
//'Some child specific code'
}
}