Szukam metody przekazania właściwości do funkcji. Nie wartość nieruchomości. Funkcja nie wie z góry, która właściwość będzie używana do sortowania. Najprostszym sposobem w tym przykładzie jest: tworzenie 4 nadpisań z różnymi typami parametrów. Innym sposobem jest użycie funkcji wewnętrznej typeof()
. Oba te sposoby są niedopuszczalne, gdy klasa 1 ma setki właściwości. Do tej pory znalazłem następującą metodę:Właściwość Pass sama do funkcji jako parametr w C#
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 "ludzkiego błędu" podczas przekazywania ciągu do funkcji przetwarzania. Kiedy łańcuch zostanie wygenerowany przez inną część kodu, będzie to jeszcze bardziej brzydkie. Proszę, zasugeruj bardziej elegancki sposób wdrożenia przejścia własności Klasy 1 do działania w celu dalszego przetwarzania. Najlepszą opcją użycia IMHO będzie (lub coś w tym stylu):
vehicles = sortBy(vehicles, Class1.maxSpeed);
Która wersja .NET? – alf
W jaki sposób właściwość służy do sortowania wybranego w pierwszej kolejności? – arootbeer
wersja .NET 4.0 –