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 Será nulo como debería ser. Pero si fuera C ++ podría haber escritoFoo f = reinterpret_cast<Foo>(b); y conseguir lo que quería. ¿Qué puedo hacer para lograr lo mismo en C #?

PD. Estoy asumiendo queBase yFoo son coherentes con los datos

[ACTUALIZAR]

Aquí hay un escenario simple donde unreinterpret_cast 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 Yo podría simplementereinterpret_cast Los parámetros dados en los esperados y llamar al servicio.

Respuestas a la pregunta(7)

Su respuesta a la pregunta