Видя, что С# не может switch для типа (который, как я понимаю, не был добавлен в качестве особого случая, потому что отношения is означают, что может применяться более одного отдельного case), существует ли лучший способ для имитации переключения на другой тип, кроме этого?
void Foo(object o)
{
if (o is A)
{
((A)o).Hop();
}
else if (o is B)
{
((B)o).Skip();
}
else
{
throw new ArgumentException("Unexpected type: " + o.GetType());
}
}