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;
}
Tengo diferentes métodos que implementan el patrón Async basado en eventos. Estos métodos desencadenan un ProgressChanged
eventargs y un Completed
eventargs. Todos disparan los mismos eventargs (como se muestra en el código anterior).¿Hay demasiados eventos?
¿Tiene sentido proporcionar un evento para cada método asíncrono? ¿O solo proporciona un evento generalizado para todos los métodos asíncronos? ¿Hay demasiados eventos?
Creo que sería una mala guía para refactorizar eventos a aquellos que comparten la misma firma; después de todo, en Windows.Forms, la clase Form tiene el mismo valor para 'Activated',' AutoSizeChanged', 'AutoValidateChanged'. .. –
No es una pauta de diseño. Es una "INDICACIÓN que PUEDE reemplazar". No estoy estableciendo una regla. Soy plenamente consciente de que muchos eventos comparten sus tipos EventArgs mientras que no deberían fusionarse. –