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

如何按值比较System.Object类型的两个值?,object,c#-2.0,compare,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.Min

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

System.Object
没有可比较的属性值。当然,如果您可以检查每个对象所具有的函数返回的值。

基本值类型,如
Int32
实现:

IComparable value=(IComparable)Convert.ChangeType(obj,t);
I可比较的最小值=。。。
IComparable maxValue=。。。
如果(minValue.CompareTo(值)>0 | | maxValue.CompareTo(值)<0)
扔。。。

您可以使用这样一个事实,即您列出的所有类型都实现了接口。

而不是对象/var使用动态

dynamic minValue = Convert.ChangeType(this.MinValue.Value, t);
dynamic maxValue = Convert.ChangeType(this.MaxValue.Value, t);
dynamic minValue = Convert.ChangeType(this.MinValue.Value, t);
dynamic maxValue = Convert.ChangeType(this.MaxValue.Value, t);