gpt4 book ai didi

C# 在覆盖方法之前调用方法

转载 作者:行者123 更新时间:2023-11-30 15:59:35 25 4
gpt4 key购买 nike

美好的一天,我有一个带有虚拟方法的基类,每个实现都需要覆盖它,但我想在覆盖之前先调用基方法。有没有一种方法可以在不必实际调用该方法的情况下完成此操作。

public class Base
{
public virtual void Method()
{
//doing some stuff here
}
}

public class Parent : Base
{
public override void Method()
{
base.Method() //need to be called ALWAYS
//then I do my thing
}
}

我不能总是相信 base.Method() 会在覆盖中被调用,所以我想以某种方式强制执行它。这可能是某种设计模式,任何实现结果的方法都可以。

最佳答案

一种方法是在基类中定义一个public方法,它调用另一个可以(或必须)覆盖的方法:

public class Base
{
public void Method()
{
// Do some preparatory stuff here, then call a method that might be overridden
MethodImpl()
}

protected virtual void MethodImpl() // Not accessible apart from child classes
{
}
}

public class Parent : Base
{
protected override void MethodImpl()
{
// ToDo - implement to taste
}
}

关于C# 在覆盖方法之前调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41358864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com