怎么让重写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 }                        
相关文章
相关标签/搜索