修改事件中的发件人状态(除了是可变对象外),这是否被认为是不好的做法?C#事件更改发件人状态
所有的事件的例子,我发现非常简单,只有这样做Console.WriteLine("event!")
简单代码:
public void HandleEvent(object sender, EventArgs args)
{
ClassA a = (ClassA)sender;
a.doSomething(this.makeSomething());
}
修改事件中的发件人状态(除了是可变对象外),这是否被认为是不好的做法?C#事件更改发件人状态
所有的事件的例子,我发现非常简单,只有这样做Console.WriteLine("event!")
简单代码:
public void HandleEvent(object sender, EventArgs args)
{
ClassA a = (ClassA)sender;
a.doSomething(this.makeSomething());
}
这不是坏习惯,你需要小心。 例如,如果从事件处理程序调用dosomething,或者直接调用dosomething,那么它是相关的。
或者因为当事件处理程序被触发时你不能依赖,所以你是异步的,所以在你调用dosomethingelse之前,你不能假定dosomething已经被执行。
如果它不是1或已经有2个逻辑需要,那么它应该将状态更改为2。
如果你开始消失在那个洞里,可能会更好地排队请求来做一个dosomething,然后有一个引擎处理当前状态和请求队列。
因此,请思考如何将dosomething与任何其他方法相关联。如果它是自包含的,那么如果依赖关系开始扩散,那么你就没问题,而不是糟糕的做法,而不是糟糕的做法。
我不认为这是不好的做法,只要你不把假设关于运行时的顺序,以便调用注册到事件的事件处理程序。实际上,作为订单not guaranteed,您不应该依赖它来更改您的对象的状态,包括发件人之一。
我认为在很多情况下都可以。想象一下,事件就像“我准备好了更多的数据!”。你会期望改变这种事件的来电者。 –