怎麼讓重寫ToString()變成再也不是體力活

  之前寫代碼類的時候不太喜歡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 }                        
相關文章
相關標籤/搜索