Передайте само свойство в качестве параметра в C #

Я ищу метод для передачи самого свойства в функцию. Не стоимость имущества. Функция заранее не знает, какое свойство будет использовано для сортировки. Простейший способ в этом примере: создание 4 перезаписей с различными типами параметров. Другой способ - использованиеtypeof() внутренняя функция. Оба эти способа неприемлемы, когда Class1 имеет сотни свойств. Пока я нашел следующий метод:

class Class1
{
    string vehName;
    int maxSpeed;
    int fuelCapacity;
    bool isFlying;
}

class Processor
{
    List<Class1> vehicles = null;
    Processor(List<Class1> input)
    {
        vehicles = input;
    }

    List<Class1> sortBy(List<Class1> toSort, string propName)
    {
        if (toSort != null && toSort.Count > 0)
        {
            return toSort.OrderBy(x => typeof(Class1).GetProperty(propName).GetValue(x, null)).ToList();
        }
        else return null;
    }
}

class OuterUser
{
    List<Class1> vehicles = new List<Class1>();
    // ... fill the list
    Processor pr = new Processor(vehicles);
    List<Class1> sorted = pr.sortBy("maxSpeed");
}

Мне не нравится этот метод из-за риска "человеческой ошибки" при передаче строки в функцию обработки. Когда строка генерируется другой частью кода, это будет еще хуже. Пожалуйста, предложите более элегантный способ реализовать передачу свойства Class1 в функцию для дальнейшей обработки. Лучший вариант для использования IMHO будет (или что-то вроде этого):

vehicles = sortBy(vehicles, Class1.maxSpeed);

Ответы на вопрос(6)

Ваш ответ на вопрос