Вы сами пишите, что BaseCar абстрактный
Значит
public abstract class BaseCar
Далее вы можете уже ввнести в базовый класс метод для определения типа авто
public abstract CarType GetCarType();
Который придется реализовать в каждом дочернем классе
public class Autobus : BaseCar
{
public override CarType GetCarType()
{
return CarType.Autobus;
}
public int MaxPeople {get;set;}
}
Можно конечно по классу определять
car.Type == typeof(Autobus)
, но будет медленней.
В классе
class Garage, вы можете все хранить в одном списке
List< BaseCar >
Вот теперь по единому списку вы можете делать сортировку по месту и исключать по типу.