class A {}
class B:A {}
var a = new A();
var b = new B();
Console.WriteLine(a.GetType());
Console.WriteLine(b.GetType());
Console.WriteLine((b as A).GetType());
Требуется, чтобы последний вывод вывел "A". Пример очень сильно сокращен, но вопрос именно в этом: у меня есть объект b и тип A, и нужно провернуть такой финт. То есть, чтобы b определился, как A. Не знаю, как по-другому описать.
Там на самом деле b передается в чужой Dictionary, идеологию которого менять не могу. Причем с типами я не работаю, а передаю в методы объекты; словарь - внутри чужого кода. То есть я передаю b, но хочу, чтобы этот чужой словарь думал, что это объект базового типа A. Мне в голову пришло только убрать наследование, тогда не придется "подменять" тип, но хотелось бы именно "подменить".