Использование констант опасно.Документация для IComparer.Compare только указывает, что возвращаемое значение должно быть «меньше нуля», если x < y
, или «больше нуля», если x > y
.Поэтому не следует полагать, что возвращаемое значение будет одним из [-1, 0, 1].
Вместо этого я бы предложил создать метод расширения на IComparer, который сделает всю работу за вас.
static MyCompare(this IComparable self, object x, object y)
{
var result = self.Compare(x, y);
if(result < 0) return ComparerResult.ALessthanB;
if(result == 0) return ComparerResult.Equal;
return ComparerResult.AGreaterThanB;
}