Equivalente de reinterpret_cast de C ++ en C #

Me pregunto cuál es el equivalente de C ++reinterpret_cast Cía#!?

Aquí está mi muestra:

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

No tengo ninguna objeción por quéf&nbsp;Será nulo como debería ser. Pero si fuera C ++ podría haber escritoFoo f = reinterpret_cast<Foo>(b);&nbsp;y conseguir lo que quería. ¿Qué puedo hacer para lograr lo mismo en C #?

PD. Estoy asumiendo queBase&nbsp;yFoo&nbsp;son coherentes con los datos

[ACTUALIZAR]

Aquí hay un escenario simple donde unreinterpret_cast&nbsp;podría ser útil:

Considere escribir una biblioteca XXX-RPC en la que no tenga control sobre los parámetros entrantes ni sobre la firma de los servicios a los que llamar. Se supone que su biblioteca debe llamar al servicio solicitado con los parámetros dados. Si C # es compatiblereinterpret_cast&nbsp;Yo podría simplementereinterpret_cast&nbsp;Los parámetros dados en los esperados y llamar al servicio.