Почему бы в родительский класс SpaceObject не добавить абстрактный метод Initialize, который переопределить в каждом дочернем классе, и тогда ваш код сократится до
void InitializeSpaceObject(SpaceObject spaceObject)
{
spaceObject.Initialize();
}
А еще, говорят, лучше передавать в параметрах интерфейсы, то есть должно быть так
void InitializeSpaceObject(ISpaceObject spaceObject)
{
spaceObject.Initialize();
}