之前写代码类的时候不太喜欢Override ToString()方法,缘由是重复性的体力活,没什么含量,而系统提供的实体类可能又知足不了你的实际需求,在这样的状况下,你是否有一种是在被强迫的状况下写代码。并且你要是ide
随便定义一个实体类,就要重写,那岂不累死,若是你不想作着重复的工做,那么此时你可试着去"偷懒",并且此方法比较通用,固然针对特别的类型我没作处理,如日期类型,但我想这里应该也不难,无非就是一个Is as 判断ui
的事,这里很少描述。this
本文说的是取巧,那么先介绍一个数据契约属性【DataMember】,使用此属性的第一步是引用using System.Runtime.Serialization.而后在定义本身的类成员上使用【DataMember】,最后根据反射根据本身定义的和须要spa
获取的就能够遍历,最后输出完成重写ToString()方法了。code
固然用此方法也有不足的地方,既然作到通用,那若是是特殊的那就知足不了,任何事情都是这样,想要灵活和想要具体就像鱼和熊掌同样。blog
最后附上代码类。
ci
1 class WechatEntity 2 { 3 /// <summary> 4 /// 车牌 5 /// </summary> 6 [DataMember] 7 public string LicenseNum; 8 /// <summary> 9 /// 开始时间 10 /// </summary> 11 [DataMember] 12 public DateTime StartTime; 13 /// <summary> 14 /// 结束时间 15 /// </summary> 16 [DataMember] 17 public DateTime EndTime; 18 /// <summary> 19 /// 管理员名字 20 /// </summary> 21 [DataMember] 22 public string ManageName; 23 /// <summary> 24 /// 支付方式 25 /// </summary> 26 [DataMember] 27 public string PayMethod; 28 /// <summary> 29 /// 收费处 30 /// </summary> 31 [DataMember] 32 public string ChargePlace; 33 /// <summary> 34 /// 金额 35 /// </summary> 36 [DataMember] 37 public Decimal Money; 38 /// <summary> 39 /// 备注 40 /// </summary> 41 [DataMember] 42 public string Remark; 43 44 /// <summary> 45 /// 订单号 46 /// </summary> 47 [DataMember] 48 public string OrderID; 49 50 /// <summary> 51 /// 重写ToString()方法 52 /// </summary> 53 public override string ToString() 54 { 55 StringBuilder strBuilder = new StringBuilder(); 56 57 Type t = this.GetType(); 58 FieldInfo[] fields = t.GetFields(BindingFlags.Public | 59 BindingFlags.Instance); 60 61 for (int i = 0; i < fields.Length - 1; i++) 62 { 63 strBuilder.Append(fields[i].Name + " = " + 64 (fields[i].GetValue(this) ?? "") + " "); 65 } 66 67 return strBuilder.ToString(); 68 } 69 70 }