Интересно, что эквивалент 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
заданных параметров в ожидаемые и вызвать службу.