Equivalente de reinterpret_cast do C ++ em c #

Eu me pergunto qual é o equivalente do C ++reinterpret_cast em c #!

Aqui está minha amostra:

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

Eu não tenho objeção porquef será nulo, já que deveria ser. Mas se fosse C ++ eu poderia ter escritoFoo f = reinterpret_cast<Foo>(b); e conseguir o que eu queria. O que posso fazer para conseguir o mesmo em c #?

PS. Eu estou supondo queBase eFoo são consistentes em termos de dados.

[ATUALIZAR]

Aqui está um cenário simples onde umreinterpret_cast poderia ser útil:

Considere escrever uma biblioteca XXX-RPC em que você não tenha controle sobre os parâmetros de entrada nem sobre a assinatura dos serviços a serem chamados. Sua biblioteca deve chamar o serviço solicitado com os parâmetros fornecidos. Se C # suportadoreinterpret_cast Eu poderia simplesmentereinterpret_cast os parâmetros dados nos esperados e ligue para o serviço.

questionAnswers(7)

yourAnswerToTheQuestion