更新 1
単純なジェネリック型の元の制限により、実装されているかどうかに関係なく、さまざまな種類のオブジェクトを比較できないことがわかりIComparable<T>
ました。その結果、最新のものは次のようになりました。
public static bool IsLessThan<TSource, TComparer>(this TSource source, TComparer comparer)
where TSource : IComparable<TComparer>
where TComparer : IComparable<TComparer>
{
return source.CompareTo(comparer) < 0;
}
オリジナル
インターフェイスに簡単なIsLessThan(IComparable comparer)
拡張メソッドを作成しました。ただしIComparable
、小さな問題が発生しました。私は、基本的に、IComparable
比較したくないものをすべて比較できることに気付きました。あるいは、ジェネリック型を使用してパラメーターを制限できるかどうか疑問に思っていますか? 現在、私の拡張メソッドは次のようになっています。
public static bool IsLessThan(this IComparable source, IComparable comparer)
{
return source.CompareTo(comparer) < 0;
}
の制約を維持しながら、ジェネリックを使用してsource
とが同じ型であることを確認する方法はありますか?comparer
IComparable
例
int test = 2;
var resultOne = test.IsLessThan(3); // should return true
var resultTwo = test.IsLessThan("Hello world"); // shouldn't compile