使用 C#,如果函数 A()
在函数 C()
之前被调用,我需要做一些额外的工作。如果在 A()
和 C()
之间调用了任何其他函数,那么我不想做那些额外的工作。有什么想法需要最少的代码重复吗?
我试图避免在每个函数 B1
..BN
中添加类似 flag = false;
的行。
这是一个非常基本的例子:
bool flag = false;
void A()
{
flag = true;
}
void B1()
{
...
}
void B2()
{
...
}
void C()
{
if (flag)
{
//do something
}
}
上面的例子只是使用了一个简单的例子,但我愿意使用 bool 值以外的东西。重要的是我希望能够设置和重置某种标志,以便 C()
知道如何相应地运行。
感谢您的帮助。如果您需要澄清,我会编辑我的帖子。
最佳答案
为什么不将您的“额外工作”分解为一个内存函数(即缓存其结果的函数)?每当您需要这项工作时,只需调用此函数,如果缓存是新的,它就会短路。每当该工作变得陈旧时,使缓存无效。在你上面相当奇怪的例子中,我假设你需要在每个 B 中调用一个函数,在 C 中调用一个函数。调用 A 将使缓存无效。
如果您正在寻找解决方法(即一些聪明的方法来捕获所有函数调用并插入此调用),我真的不会打扰。我可以设想一些疯狂的运行时反射代理类生成,但你应该让你的代码流清晰明了;如果每个函数都依赖于已经完成的工作,只需在每个函数中调用“doWork”即可。
关于c# - 当在 C# 中调用任何其他方法时,如何自动重置 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2626021/