でこの状況を解決するかどうかはわかりません基本的に私は、次のしている:ジェネリック制約 - 私はどちらか/またはケース
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<T>
のいずれかであることを示す方法はありません。だから、私はちょうど1つを選んでそれと一緒に行くのではなく、ここで何をすべきか分からない。そして、私が選んだものが何であっても、彼らは分かれていて、互いに相続していない(それは意味をなさない)ので、私は他の人に負けている。
私はここで何かを見つけられませんでした。両方を使って達成する方法があるのですか、それとも1つ(おそらくジェネリック版)を選択する必要がありますか?
私はそれについて本当に考えなかった。私はジェネリック版から始めてコピーして貼り付け、すぐに変更を加えようとしたからだと思います。 –
また、デフォルトでは 'IComparable'オプションが最初に選択され、 'IComparable'オプションが2番目に選択されますか? –
@ m-y:オーバーロードの解像度は*より具体的な*メソッドを選択します。どちらがより具体的であるかを判断する方法がない場合は、あいまいなエラーが発生します。 –