Я бы предложил избавиться от таких switch
блоков и отделить каждый конкретный метод от состояния, введя гибкую карту стратегии для каждого состояния, чтобы ее можно было легко изменить или даже ввести:
IDictionary<MyState, Func<bool>> strategyMap;
1) Заполните
// if idea is to access methods without instance of MyOtherType -
// make all methods and class itself static so you can access it
// like MyOtherType.Method1
strategyMap = new Dictionary<MyState, Func<bool>>();
strategyMap.Add(MyState.DoSomething1, myOtherTypeInstance.Method1);
2) Вызов соответствующей стратегии зависит от состояния, а не switch(State)
if (starategyMap.ContainsKey(State))
{
// pass in an associated strategy
Process(starategyMap[State]);
}
Не стесняйтесь спрашивать в случае возникновения вопросов