Эквивалент C ++ reinterpret_cast в C #

Интересно, что эквивалентно С ++?reinterpret_cast в C # !?

Вот мой образец:

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

У меня нет возражений, почемуf&nbsp;будет нулевым, так как должно быть. Но если бы это был C ++, я мог бы написатьFoo f = reinterpret_cast<Foo>(b);&nbsp;и получить то, что я хотел. Что я могу сделать, чтобы добиться того же в C #?

PS. Я предполагаю чтоBase&nbsp;а такжеFoo&nbsp;являются последовательными в отношении данных.

[ОБНОВИТЬ]

Вот простой сценарий, гдеreinterpret_cast&nbsp;может быть полезно:

Попробуйте написать библиотеку XXX-RPC, в которой вы не можете контролировать ни входящие параметры, ни подпись вызываемых служб. Ваша библиотека должна вызвать запрашиваемую службу с заданными параметрами. Если C # поддерживаетсяreinterpret_cast&nbsp;Я мог бы простоreinterpret_cast&nbsp;Задать параметры в ожидаемые и вызвать сервис.