Интересно, что эквивалент C++ reinterpret_cast в С# !?
Здесь мой пример:
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 будет пустым, так как это должно быть. Но если это было C++, я мог бы написать Foo f = reinterpret_cast<Foo>(b); и получить то, что я хотел. Что я могу сделать, чтобы добиться того же результата в С#?
PS. Я предполагаю, что Base и Foo соответствуют данным.
[ОБНОВИТЬ]
Вот простой сценарий, когда reinterpret_cast может быть полезен:
Подумайте о написании библиотеки XXX-RPC, в которой у вас нет контроля над входящими параметрами и сигнатурой служб для вызова. Предполагается, что ваша библиотека вызовет запрошенную услугу с заданными параметрами. Если С# поддерживал reinterpret_cast я мог бы просто reinterpret_cast заданных параметров в ожидаемые и вызвать службу.