У меня есть список пользовательских типов Carddetails .
Код: Выделить всё
List cards;
< /code>
carddetails.cs включает атрибуты карты, такие как следующие. < /p>
public Class CardDetails {
public int cost;
public int name;
public int power;
// and so on
}
if(sortByName.isOn) { // sortByName is a UI toggle and isOn returns true if it is checked
var sortedCards = cards.OrderBy(card => card.name);
}
else if(sortByCost.isOn) {
var sortedCards = cards.OrderBy(card => card.cost);
}
// And so on
< /code>
И это работает просто отлично, но я не хочу большего, если лестница. У CardDetails будет много атрибутов в будущем, и я не хочу возвращаться к сценарию и добавлять здесь условия. Поэтому мне было интересно, есть ли лучший способ достичь этого? < /p>
// this will be updated based on sort parameters like name, cost etc
string fieldName;
var sortedCards = cards.OrderBy(card => card.GetType().GetField(fieldName));
< /code>
Однако он не работает так, как предполагалось, он просто возвращает исходный список по какой -то причине. Любая помощь или указатели будут оценены.
спасибо.>
Подробнее здесь: https://stackoverflow.com/questions/794 ... -type-in-c
Мобильная версия