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.