之前寫代碼類的時候不太喜歡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 }