我有一个事件处理程序,它接收一个 eventargs 对象,该对象是一个枚举值,可以进一步细化里面的信息。它看起来像
public enum StatusCallbackType { Status1, Status2, Status3, Status4 }
public class StatusEventArgs
{
public StatusCallbackType Type {get;set;}
public StatusData Data {get; set;}
}
Statusdata 是一个基础抽象类,它根据给定的 CalllbackType 进行更改。
现在处理事件的代码看起来类似于
switch e.Type
{
case Status1:
DoAction1(e.Data as Opt1Data);
break;
case Status2:
DoAction1(e.Data as Opt2Data);
break;
case Status3:
DoAction1(e.Data as Opt3Data);
break;
}
问题是,如果我们更改 StatusNotifications 或想要更改它们的处理方式,我们必须调整可能变得非常大的开关,我正在考虑使用允许我为任何给定状态注入处理程序的东西。
另一方面,我现在真的不需要它。交换机解决方案有效,但它开始变大,所以我在我认为它不可维护和 YAGNI 之间进行斗争。
是否有任何模式可以将这种开关转换为 IOC 模式?你认为我真的应该费心重构那个开关吗?