public class Human
{
public void Run(){}
public void Jump(){}
public void Eat(){}
//Generalized approach
public EventHandler<HumanActivityProgressChanged> ActivityProgressChanged;
public EventHandler<HumanActivityCompleted> ActivityCompleted;
//Per-method approach
public EventHandler<HumanActivityProgressChanged> Running;
public EventHandler<HumanActivityCompleted> Ran;
public EventHandler<HumanActivityProgressChanged> Jumping;
public EventHandler<HumanActivityCompleted> Jumped;
public EventHandler<HumanActivityProgressChanged> Eating;
public EventHandler<HumanActivityCompleted> Ate;
}
我有不同的方法來實現基於事件的異步模式。這些方法會觸發eventargs和Completed
eventargs。它們都觸發相同的eventargs(如上面的代碼所示)。是否有太多事件發生?
爲每個異步方法提供事件有意義嗎?或者只是爲所有的異步方法提供一個廣義事件?有太多事件會發生嗎?
我認爲將共享相同簽名的事件重構爲一個糟糕的指南 - 畢竟,在Windows.Forms中,Form類與'Activated','AutoSizeChanged','AutoValidateChanged'具有相同的eventargs。 – 2011-05-26 09:03:21
這不是一個設計指南。這是一個「你可能代替的指示」我不是一個規定。我完全意識到許多事件共享它們的EventArgs類型,而不應該合併它們。 – 2011-05-26 09:05:23