Я искал способ рефакторинга и упростил одну функцию, где мне нужно сортировать данные в зависимости от типа входного класса и застрял в switch(input.GetType()):
Быстрый поиск привел меня к Почему оператор С# switch не позволяет использовать typeof/GetType()? со ссылкой на http://blogs.msdn.com/peterhal/archive/2005/07/05/435760.aspx
Я прочитал документацию, но я не понимаю, что ситуация запутанна.
Из статьи:
К сожалению, как и многие "простые" языковые функции, переключатель типа не так же просто, как вначале. проблемы начинаются, когда вы смотрите на более значительным и не менее важным, Пример:
class C {}
interface I {}
class D : C, I {}
switch typeof(e) {
case C: ... break;
case I: ... break;
default: ... break;
}
Что не так просто? Вызов typeof(e) не может возвратиться - это I D и C. Он должен вернуть Type не массив интерфейсов и типов классов - Type[]. Таким образом, тип class D равен D. А D соответствует ветки default:.
Я что-то пропустил?