更新 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