Entspricht dem reinterpret_cast von C ++ in C #

Ich frage mich, was das Äquivalent von C ++ istreinterpret_cast in C # !?

Hier ist mein Beispiel:

class Base
{
    protected int counter = 0;
}

class Foo : Base
{
    public int Counter
    {
        get { return counter; }
    }
}

Base b = new Base();
Foo f = b as Foo; // f will be null

Ich habe nichts dagegen, warumf&nbsp;wird null sein, da es sein sollte. Aber wenn es C ++ wäre, hätte ich schreiben könnenFoo f = reinterpret_cast<Foo>(b);&nbsp;und bekomme was ich wollte. Was kann ich tun, um dasselbe in C # zu erreichen?

PS. Ich gehe davon ausBase&nbsp;undFoo&nbsp;sind in Bezug auf die Daten konsistent.

[AKTUALISIEREN]

Hier ist ein einfaches Szenario, in dem areinterpret_cast&nbsp;könnte hilfreich sein:

Erstellen Sie eine XXX-RPC-Bibliothek, in der Sie weder die eingehenden Parameter noch die Signatur der aufzurufenden Dienste steuern können. Ihre Bibliothek soll den gewünschten Dienst mit den angegebenen Parametern aufrufen. Wenn C # unterstütztreinterpret_cast&nbsp;Ich könnte einfachreinterpret_cast&nbsp;Geben Sie die angegebenen Parameter in die erwarteten ein und rufen Sie den Service auf.