Przekazuj własność, aby działała jako parametr w C #

Szukam metody do przekazania właściwości do funkcji. Nie wartość nieruchomości. Funkcja nie wie z góry, która właściwość zostanie użyta do sortowania. Najprostszym sposobem w tym przykładzie jest: utworzenie 4 nadpisań przy użyciu różnych typów parametrów. Innym sposobem jest użycietypeof() funkcja wewnętrzna. Oba te sposoby są niedopuszczalne, gdy Class1 ma setki właściwości. Do tej pory znalazłem następującą metodę:

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");
}

Nie podoba mi się ta metoda ze względu na ryzyko „błędu ludzkiego” podczas przekazywania ciągu do funkcji przetwarzania. Gdy ciąg zostanie wygenerowany przez inną część kodu, będzie to jeszcze bardziej brzydkie. Proszę zaproponować bardziej elegancki sposób implementacji przekazywania klasy Class1 do funkcji do dalszego przetwarzania. Najlepszą opcją użycia IMHO będzie (lub coś w tym stylu):

vehicles = sortBy(vehicles, Class1.maxSpeed);

questionAnswers(6)

yourAnswerToTheQuestion