2012-01-21 111 views
0

如何通過值比較兩個值類型System.Object?如何通過值比較兩個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

System.Object因爲沒有得到propertiese whoes值可以比較。當然可以檢查每個對象所具有的函數返回的值。

1

基本值類型,如Int32實施IComparable

IComparable value = (IComparable) Convert.ChangeType (obj, t) ; 
IComparable minValue = ... 
IComparable maxValue = ... 

if (minValue.CompareTo (value) > 0 || maxValue.CompareTo (value) < 0) 
    throw ... 
0

你可以使用的事實,你已經列出的所有類型實現IComparable接口。

0

相反對象的/ var使用動態的...

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