Чем заменить if-else/switch-case при генерации объекта-наследника?
Доброго времени суток.
Имею БД СТО и программу которая с ней работает. Среди классов, отражающих сущности БД есть Car, который имеет несколько наследников: LuxuryCar, SportCar и т.д, а также поле типа CarType, отражающее какому типу машины относится данный экземпляр Car. При обращении к БД через Entity Framework я хочу получать список машин определенного CarType, сейчас это реализовано с использованием if-else, но я уверен, есть решение, которое позволит избавиться от if-else или switch-case
Код генерации списков:
public List<Car> GetCarsTypeOF(string carType)
{
List<Car> cars;
var db = new STOContext();
if (carType == "LuxuryCar")
{
cars = db.Cars
.Where(c => c.CarType
.Equals(new LuxuryCar().GetType()))
.ToList();
}
else if (carType == "MinivanCar")
{
cars = db.Cars
.Where(c => c.CarType
.Equals(new MinivanCar().GetType()))
.ToList();
}
else if (carType == "SUV")
{
cars = db.Cars
.Where(c => c.CarType
.Equals(new SUV().GetType()))
.ToList();
}
else if (carType == "SportCar")
{
cars = db.Cars
.Where(c => c.CarType
.Equals(new SportCar().GetType()))
.ToList();
}
else
{
throw new Exception();
}
return cars;
}
PS: если что то не так с оформлением вопроса или нужна еще информация - вопрос дополню