在C#中调用其他方法时,如何自动重置布尔值?

gta*_*rga 4 c# flags set call

使用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()知道如何相应地表现.

谢谢您的帮助.如果您需要澄清,我将编辑我的帖子.

Ada*_*ght 7

为什么不将"额外工作"纳入一个记忆功能(即缓存其结果的功能)?只要您需要这项工作,您只需调用此函数,如果缓存是新鲜的,它将短路.每当该工作变得陈旧时,缓存就会失效.在上面相当奇怪的例子中,我假设你需要在每个B中进行函数调用,并且在C中需要一个函数调用.对A的调用将使缓存无效.

如果你正在寻找那个(即一些聪明的方式来捕获所有函数调用并插入此调用),我真的不会打扰.我可以设想一些疯狂的运行时反射代理类生成,但是你应该让你的代码流清晰明了; 如果每个函数都依赖于已经完成的工作,只需在每个函数中调用"doWork".