2012-01-21 17 views
0

System.Object型の2つの値を値で比較する方法は?次の操作を実行する方法System.Object型の2つの値を値と比較するにはどうすればよいですか?

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値を得なかったよう。確かにオブジェクトごとに関数が返す値をチェックすることができます。 Int32よう

1

基本値の型はIComparableを実装:

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

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

あなたがすべてリストされているタイプがIComparableインタフェースを実装しているという事実を使用することができます。代わりに、動的オブジェクトの/ var利用の

0

...

dynamic minValue = Convert.ChangeType(this.MinValue.Value, t); 
dynamic maxValue = Convert.ChangeType(this.MaxValue.Value, t); 
関連する問題