gpt4 book ai didi

c# - 如果子类调用覆盖成员,则阻止/生成警告

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:06 25 4
gpt4 key购买 nike

给定以下伪 C# 代码:

public abstract class Worker
{
public void DoWork()
{
Prepare();
Work();
Cleanup();
}

protected abstract void Work();
}

通过这种设计,派生类(覆盖 Work() 方法)可以直接调用 Work() 方法。

我正在寻找有关如何防止任何子类执行此调用或至少生成编译器警告的设计技巧。

我为什么要这样做?Worker 实际上将 Work() 分派(dispatch)给另一个线程。 DoWork() 负责锁定。


我知道,这很奇怪。 Work() 主体可能只包含对 DoMyWork() 的方法调用,对象可能在其他地方调用 DoMyWork()。拦截它是不可能的。

无论如何。我很欣赏关于这个问题的任何想法。

最佳答案

感谢 Eris 和 Corey,我想我明白了。这样怎么样:

public abstract class Worker
{
public void DoWork()
{
if (Work != null)
{
Prepare();
Work();
Cleanup();
}
}

protected Action Work { private get; set; }
}

public class ImplWorker {
public ImplWorker() {
Work = //whatever
}
}

不过,如果他真的想要,他可以将它存储在其他地方等等。但它达到了我的想象。

关于c# - 如果子类调用覆盖成员,则阻止/生成警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36286704/

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