Вы можете использовать is
шаблон типа , чтобы присвоить результат переменной и использовать ее для вызова Compare
. Вам также не нужно преобразовывать b
в IComparable<T>
, поскольку CompareTo
принимает параметр типа T
(а b
уже T
)
if (a is IComparable<T> comparable)
{
int result = comparable.CompareTo(b);
// do something with the result
}
Другой вариант - для применения общего c ограничения с IComparable<T>
интерфейсом
private void test<T>(T a, T b) where T : IComparable<T>
{
var result = a.CompareTo(b);
// do something with the result
}