我有两个事件A和B.
如果事件A被引发,我需要检查B的事件处理程序。我知道我可以使用旗帜做到这一点,但到目前为止我已经使用了很多旗帜来处理这种情况;并希望使用替代策略。
答案 0 :(得分:2)
对我而言,这听起来像是糟糕的设计。如果引发了A的事件,它应该做一些像修改某个对象实例的状态的事情。因此,如果引发B事件,通过检查A事件所做的状态更改,您应该知道它是否被引发。如果我在糟糕的设计方面出错,那么请发布有关您的解决方案的更多信息。
示例:
void eventOfA(EventArgs args)
{
// modify application or whatever state like
myAppContext.ChangeStatus(2);
// or
myWhateverInstance.DoStuff();
}
void eventOfB(EventArgs args)
{
if(myAppContext.Status == 2)
// eventOfA was raised
else
// eventOfA was not raised
// or
if(myWhateverInstance.DidStuff)
// eventOfA was raised
else
// eventOfA was not raised
}
答案 1 :(得分:0)