Вы также можете иметь словарь (или Func вместо Action) или что-то в этом роде (учитывая, что ваши функции имеют аналогичную подпись). Тогда вы могли бы вместо использования переключателя получить что-то вроде:
public class MyClass
{
Dictionary<string, Action> myDictionary;
public MyClass()
{
BuildMyDictionary();
}
private Dictionary<int, Action<int, int>> BuildMyDictionary()
{
myDictionary.Add("x", DoSomethingX);
myDictionary.Add("y", DoSomethingY);
myDictionary.Add("z", DoSomethingZ);
myDictionary.Add("w", DoSomethingW);
}
public void DoStuff()
{
string whatever = "x"; //Get it from wherever
//instead of switch
myDictionary[t]();
}
}
Я ответил на аналогичный вопрос здесь с похожим примером.
Кроме того, попробуйте использовать перечисления вместо строк в вашем операторе switch.