Best practice to eliminate switch statements? - C#