Odpowiednik reinterpret_cast C ++ w C #

Zastanawiam się, co jest odpowiednikiem C ++reinterpret_cast w C # !?

Oto moja próbka:

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

Nie mam zastrzeżeń, dlaczegof będzie null, ponieważ powinno być. Ale gdyby to był C ++, mógłbym napisaćFoo f = reinterpret_cast<Foo>(b); i zdobądź to, czego chciałem. Co mogę zrobić, aby osiągnąć to samo w C #?

PS. Zakładam toBase iFoo są spójne pod względem danych.

[AKTUALIZACJA]

Oto prosty scenariusz, w którym areinterpret_cast może być pomocne:

Rozważ pisanie biblioteki XXX-RPC, w której nie masz kontroli nad przychodzącymi parametrami ani podpisu usług do wywołania. Twoja biblioteka ma wywoływać żądaną usługę o podanych parametrach. Jeśli C # jest obsługiwanyreinterpret_cast Mógłbym po prostureinterpret_cast podane parametry do oczekiwanych i wywołaj usługę.

questionAnswers(7)

yourAnswerToTheQuestion