Generic constraints - я не уверен, как исправить эту ситуацию в случае either/or

В принципе, у меня есть следующее:

public static bool IsBetween<T>(this T value, T a, T b)
    where T : IComparable
{
    ...
}

public static bool IsBetween<T>(this T value, T a, T b)
    where T : IComparable<T>
{
    ...
}

Проблема в том, что я не могу этого сделать, потому что вы не можете иметь член с одинаковой сигнатурой, даже если ограничения разные. Но нет способа указать, что ограничение является либо IComparable ИЛИ IComparable. Поэтому я не знаю, что здесь делать, кроме как просто выбрать одно из них и следовать ему. И, независимо от того, какой из них я выберу, я потеряю от другого, потому что они раздельные и не наследуются друг от друга (что имеет смысл).

Я что-то упускаю, есть ли способ использовать оба варианта, или мне придется выбрать один (вероятно, общую версию)?

5
задан John Saunders 18 February 2012 в 13:09
поделиться