00001 using System;
00002 using System.Collections.Generic;
00003 using System.Text;
00004
00005 namespace HouseOver.THARM.Search
00006 {
00010 [Serializable]
00011 public class ComparableCheck : Check
00012 {
00014 object minValue;
00016 object maxValue;
00017
00021 public object MaxValue
00022 {
00023 get { return maxValue; }
00024 set {
00025 try { maxValue = (IComparable)Convert.ChangeType(value, FieldType); }
00026 catch { maxValue = null; }
00027 }
00028 }
00029
00033 public object MinValue
00034 {
00035 get { return minValue; }
00036 set {
00037 try { minValue = (IComparable)Convert.ChangeType(value, FieldType); }
00038 catch { minValue = null; }
00039 }
00040 }
00041
00051 public ComparableCheck(string fieldName, string humanReadableName, bool fieldRequired, Type fieldType, object minValue, object maxValue)
00052 : base(fieldName, humanReadableName, fieldRequired, fieldType)
00053 {
00054 this.minValue = minValue;
00055 this.maxValue = maxValue;
00056
00057 }
00058
00064 public override bool Verify(object c)
00065 {
00066 if (minValue == null || maxValue == null || !fieldRequired)
00067 return true;
00068 IComparable ic;
00069 try
00070 {
00071 ic = (IComparable)Convert.ChangeType(c, FieldType);
00072 }
00073 catch {
00074 return false;
00075 }
00076 return ic.CompareTo(minValue) >= 0 && ic.CompareTo(maxValue) <= 0;
00077 }
00078 }
00079 }