泛型解决问题一例

       数据验证规则基本都会包括最大值和最小值的规则问题,在.net下值类型还是比较多的Int,Int16,double等等,如果根据每种情况实现这种规则的确比较麻烦。因为类型不确定因为统一封装起来比较困难(主要是不定因素导致编写具备封闭性处理代码比较难);当不值设置值时是不能作规则断判处理,但在.net 2.0之前所有值类型都有默认值(必须自己添加处理代码)这个时候泛型就能很好地派上用场。

规则抽象类代码:

public abstract class ValueTypeToStringFormat<T> : Changer where T: struct, IComparable<T>

{

      public ValueTypeToStringFormat();

      public ValueTypeToStringFormat(string format);

      public override object Import(object value)

         {

              T newvalue = (T) base.Import(value);

                if (this.Min != null && (newvalue.CompareTo((T)this.Min.Value) < 0))

                {

                            base.OnError();

                }

                if (this.Max !=null && (newvalue.CompareTo((T)this.Max.Value) > 0))

                {

                    base.OnError();

                }

            return newvalue;

         }

         protected override object OnExport(object value)

{

               return string.Format(this.mFormat, value);

}

      public string Format { get; set; }

      public <T>? Max { get; set; }

      public <T>? Min { get; set; }

 

      private string mFormat;

      private <T>? mMax;

      private <T>? mMin;

}

 

简单的日期实验证实现类

public class DateTimeToString : ValueTypeToStringFormat<DateTime>

{

             public DateTimeToString();

               public DateTimeToString(string format);

               protected override object OnImport(object value)

               {

                     return DateTime.Parse((string) value);

               }

}

posted on 2006-10-16 11:55  henry  阅读(856)  评论(2编辑  收藏  举报

导航