使用C#,如果A()在函数之前调用函数,我需要做一些额外的工作C().如果在其间调用任何其他函数A(),C()那么我不想做那些额外的工作.任何需要最少量代码重复的想法?
我试图避免增加般的线条flag = false;到每一个功能B1.. BN.
这是一个非常基本的例子:
bool flag = false;
void A()
{
flag = true;
}
void B1()
{
...
}
void B2()
{
...
}
void C()
{
if (flag)
{
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
上面的例子只是使用了一个简单的例子,但我愿意使用除了布尔值之外的东西.重要的是我希望能够设置和重置各种标志,以便C()知道如何相应地表现.
谢谢您的帮助.如果您需要澄清,我将编辑我的帖子.
为什么不将"额外工作"纳入一个记忆功能(即缓存其结果的功能)?只要您需要这项工作,您只需调用此函数,如果缓存是新鲜的,它将短路.每当该工作变得陈旧时,缓存就会失效.在上面相当奇怪的例子中,我假设你需要在每个B中进行函数调用,并且在C中需要一个函数调用.对A的调用将使缓存无效.
如果你正在寻找那个(即一些聪明的方式来捕获所有函数调用并插入此调用),我真的不会打扰.我可以设想一些疯狂的运行时反射代理类生成,但是你应该让你的代码流清晰明了; 如果每个函数都依赖于已经完成的工作,只需在每个函数中调用"doWork".