Por que essa opção de tipo de caixa é considerada confusa?

Eu estava procurando uma maneira de refatorar e simplificar uma função em que eu tenho que fazer a classificação de dados dependendo do tipo de classe de entrada e fiquei preso emswitch(input.GetType()):

pesquisa rápida levou-me aPor que a instrução C # switch não permite o uso de typeof / GetType ()? com um link parahttp: //blogs.msdn.com/peterhal/archive/2005/07/05/435760.asp

Li a documentação, mas não recebi a justificativa de que a situação é confus

Do artigo:

Infelizmente, como muitos recursos de linguagem 'simples', a troca de tipo não é tão simples quanto parece. Os problemas começam quando você olha para um exemplo mais significativo e não menos importante como este:

class C {}
interface I {}
class D : C, I {}

switch typeof(e) {
case C: ... break;
case I: ... break;
default: ... break;
}

O que não é simples nisso? A chamadatypeof(e) não pode retornar - este é umI D eC. Tem que retornar umType não uma matriz de tipos de interface e classe -Type[]. Então o tipo doclass D éD. ED corresponde a umdefault: ramo

Estou faltando alguma coisa?

questionAnswers(2)

yourAnswerToTheQuestion