gpt4 book ai didi

c# - 确保在 C# 中调用基方法

转载 作者:IT王子 更新时间:2023-10-29 04:30:05 26 4
gpt4 key购买 nike

我能否以某种方式强制派生类始终调用重写的方法基类?

public class BaseClass
{
public virtual void Update()
{
if(condition)
{
throw new Exception("..."); // Prevent derived method to be called
}
}
}

然后在派生类中:

public override void Update()
{
base.Update(); // Forced call

// Do any work
}

我搜索并找到了使用非虚拟 Update() 和 protected 虚拟 UpdateEx() 的建议。就是感觉不太整齐,有没有更好的办法?

我希望你能回答这个问题,对于任何糟糕的英语,我深表歉意。

最佳答案

使用 template method pattern - 不要重写需要做一些工作的基方法,重写一个特定的位,它可以是抽象的,也可以是基类中的无操作。 (关于是将其设为空操作还是抽象的决定通常相当明显 - 作为具体类,基类本身是否有意义?)

这听起来基本上就是您在 UpdateEx 中找到的模式 - 虽然根据我的经验,它通常是 UpdateImpl 或类似的东西。在我看来,这作为一种模式没有任何问题 - 它避免了任何强制所有派生类编写相同代码来调用基方法的想法。

关于c# - 确保在 C# 中调用基方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2945147/

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