У меня есть обработчик событий, который получает объект 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 или хотим изменить способ их обработки, мы должны отрегулировать переключатель, который может стать действительно большим, и я подумывал об использовании чего-то, что позволило бы мне внедрить обработчик для любого данного статуса.
С другой стороны, мне это сейчас не нужно.Решения по коммутаторам работают, но они начинают набирать обороты, поэтому я борюсь между своим ощущением, что это не mantanble и YAGNI.
Существует ли какой-либо шаблон, позволяющий преобразовать коммутаторы такого типа в шаблон IOC?Как вы думаете, мне стоит заняться рефакторингом этого переключателя?