Какое же наследование без геометрии!
Скачайте проект Inheritance.Geometry и изучите Task.cs. Проблема этого подхода в том, что каждый раз при добавлении нового типа тела придется менять метод в базовом классе.
Предположим вы знаете, что в планах добавить ещё много новых геометрических примитивов. В этом случае разумно сделать метод GetVolume абстрактным и переопределить его в классах Cube, Ball и Cyllinder.
Сделайте это!
В финальном решении не должно быть ни одного приведения типа.