如何按值比较System.Object类型的两个值?
如何执行以下操作:
void Validate(Type t, Object obj)//t is always a Basic type like System.Int32, System.DateTime, System.String, etc.
{
Object value = Convert.ChangeType(obj, t);
Object minValue = Convert.ChangeType(this.MinValue.Value, t);
Object maxValue = Convert.ChangeType(this.MaxValue.Value, t);
if (!(minValue >= value && value >= maxValue))
{
throw new Exception(".....err...message.....");
}
}
答案 0 :(得分:1)
Int32
等基本价值类型实施IComparable
:
IComparable value = (IComparable) Convert.ChangeType (obj, t) ;
IComparable minValue = ...
IComparable maxValue = ...
if (minValue.CompareTo (value) > 0 || maxValue.CompareTo (value) < 0)
throw ...
答案 1 :(得分:0)
System.Object
因为没有可以比较其值的属性。当然,您可以检查每个对象所具有的函数返回的值。
答案 2 :(得分:0)
您可以使用列出的类型都实现IComparable界面。
答案 3 :(得分:0)
而不是object / var使用动态...
dynamic minValue = Convert.ChangeType(this.MinValue.Value, t);
dynamic maxValue = Convert.ChangeType(this.MaxValue.Value, t);