Нет, это невозможно. На управляемом языке, таком как C #, он просто не будет работать. Среда выполнения не разрешит этого, даже если компилятор пропустит это.
Вы сказали себе, что это кажется глупым:
SomeBaseClass class = new SomeBaseClass();
SomeDerivedClass derClass = (SomeDerivedClass)class;
Так спросите себя, действительно ли class
является экземпляром SomeDerivedClass
? Нет, поэтому преобразование не имеет смысла. Если вам нужно преобразовать SomeBaseClass
в SomeDerivedClass
, то вы должны предоставить какое-то преобразование, либо конструктор, либо метод преобразования.
Звучит так, будто ваша иерархия классов нуждается в некоторой работе. В общем случае не должно быть в состоянии преобразовать экземпляр базового класса в экземпляр производного класса. Обычно должны быть данные и / или функциональные возможности, которые не относятся к базовому классу. Если функциональность производного класса применяется к всем экземплярам базового класса, то его следует либо свернуть в базовый класс, либо втянуть в новый класс, который не является частью иерархии базового класса.