泛型解决问题一例
数据验证规则基本都会包括最大值和最小值的规则问题,在.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);
}
}