c#事件改变发送方状态
本文关键字:状态 方状态 事件 改变 变发 | 更新日期: 2023-09-27 18:14:07
在事件中修改发送者的状态(除了作为一个可变对象),这被认为是不好的做法吗?
我发现的所有事件的例子都非常简单,只做一些像Console.WriteLine("event!")
public void HandleEvent(object sender, EventArgs args)
{
ClassA a = (ClassA)sender;
a.doSomething(this.makeSomething());
}
这并不是一个坏的做法,但是您需要小心。例如,dosomething是从事件处理程序调用还是直接调用,这是否相关?
或者因为你不能依赖于eventhandler何时被触发,你是异步的,所以你不能在调用dosomeelse之前假设do某事已经被执行。
E。只有当它是1的时候,G的状态才会变为2。如果不是1或已经是2,则需要更多的逻辑。
如果你开始消失在那个洞里,也许最好把一个请求排队去做某事,然后有一个引擎来处理当前状态和请求队列。
所以想想你对a做的事情是如何与你对a调用的任何其他方法相关联的。如果它是自包含的,你就没问题,如果依赖关系开始激增,那么这是一个坏主意,而不是一个坏做法。
我不认为这是不好的做法,只要您不假设运行时调用与事件注册的事件处理程序所遵循的顺序。事实上,由于order不是保证的,你不应该依赖它来改变对象的状态,包括发送者。