У меня есть класс, реализующий IComparable. Это работает, но сравнение является статическим, т. е. это всегда тот же самый порядок, который достигается. Какой был бы хороший способ ввести сравнение по параметру, т.е. если у нас есть:
class Poo : IComparable {
public int A { ... };
public int B { ... };
...
}
IEnumerable<Foo> list = ...;
list = list.Sort(???);
Я хочу упорядочить список относительно A или B в зависимости от параметра, переданного в Sort по знакам вопроса. Каков наиболее эффективный способ сделать это?
На данный момент лучший способ, который я придумал, — это объявить пару методов, которые я передаю Sort в качестве делегатов.
private static int CompareWrtA(Foo foo1, Foo foo2) { ... }
private static int CompareWrtB(Foo foo1, Foo foo2) { ... }
if(withRespectToA)
list = list.Sort(CompareWrtA);
else
list = list.Sort(CompareWrtB);
Но на самом деле это не лучший способ. Критика приветствуется.