Gibt es eine bessere Alternative, um den Typ einzuschalten?

Siehe als C # kann nichtSchalte auf einem Typ (der, wie ich erfahre, nicht als Sonderfall hinzugefügt wurde, weil is-a-Beziehungen bedeuten, dass mehr als ein unterschiedlichesFal trifft möglicherweise zu), gibt es eine bessere Möglichkeit, den Einschalttyp zu simulieren als dies?

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());
    }
}

Antworten auf die Frage(52)

Ihre Antwort auf die Frage