У меня есть вспомогательная функция, которая в основном вызывает CompareTo на два объектах, но делают некоторый специальный угловой случай проверку, преобразования и т.д.Как смешивать/исправить IComparable и IComparable <T> беспорядок
Первоначально я написал функцию как таковые :
public static bool BetterCompare(IComparable lhs, IComparable rhs, out retCode)
{
...
retCode = lhs.CompareTo(rhs);
...
}
Но проблема в том, что если у меня есть class AwesomeClass : IComparable<AwesomeClass>
. На самом деле у меня есть несколько, поскольку некоторые более старые классы IComparable
прошли IComparable<T>
. Однако компилятор злится, потому что он не может преобразовать эти новые объекты в IComparable
. Я не знаю, делает ли это хуже, но некоторые из них - abstract
(хотя абстрактный класс действительно обеспечивает реализацию).
Как я могу передать «Я хочу два объекта, которые я могу назвать CompareTo on», а не компилятор, чтобы дать мне любую губу. Предпочтительно, новая функция НЕ должна выглядеть как BetterCompare<AwesomeClass>(this, that, out retCode);
, но просто «поступайте правильно». Или есть лучший способ сделать это, не касаясь каждого класса, делающего их иIComparable
и IComparable<T>
?
Вы можете перегружать методы, но вам нужно лучшее решение, чем это. –