如何按值比较System.Object类型的两个值?

时间:2012-01-21 08:31:09

标签: object c#-2.0 compare

如何按值比较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.....");
    }
}

4 个答案:

答案 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);