и B рандомно
где и как определить компарабл или чтото такое чтобы можно было сортировать объекты классов реализуюзих общий интерфейс?
interface I
class A: I
class B: I
I f()
List<I> data = {f(), f()};
data.Sort()
Sort принимает в себя IComparer. Реализовываем и вперёд
так для кого реализовывать? для интерфейса I?
то есть внутри компаратора кастить инстансы I к A и B и сравнивать их?
Например. Там уже как душе угодно.
подскажи бест практис для такого случая пожалуйста
Пересмотреть наследование. Это странно когда есть необходимость сравнивать конкретные реализации интерфейсов, а не абстрактные объекты.
I это просто маркер (пустой интерфейс) он был заведен просто чтобы из вункции можно было возвращать инстансы разных классов
Напрашивается между этими A и B базовый класс
опишу ситуацию поподробнее есть комбинации в покере например пара и две пары class Pair: Combination { pair_rank Rank, kicker_char Rank } class TwoPairs: Combination { high_pair_rank Rank low_pair_rank Rank kicker Rank } инстансы этих классов надо както сравнить
Ну. IComparable<Combination>
так а как я пойму к чему кастить?
Обсуждают сегодня