怎么让重写ToString()变成不再是体力活

Posted jeremylin-hu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么让重写ToString()变成不再是体力活相关的知识,希望对你有一定的参考价值。

  以前写代码类的时候不太喜欢Override ToString()方法,原因是重复性的体力活,没什么含量,而系统提供的实体类可能又满足不了你的实际需求,在这样的情况下,你是否有一种是在被强迫的情况下写代码。而且你要是

随便定义一个实体类,就要重写,那岂不累死,如果你不想做着重复的工作,那么此时你可试着去"偷懒",而且此方法比较通用,当然针对特别的类型我没做处理,如日期类型,但我想这里应该也不难,无非就是一个Is as 判断

的事,这里不多描述。

       本文说的是取巧,那么先介绍一个数据契约属性【DataMember】,使用此属性的第一步是引用using System.Runtime.Serialization.然后在定义自己的类成员上使用【DataMember】,最后根据反射根据自己定义的和需要

获取的就可以遍历,最后输出完成重写ToString()方法了。

       当然用此方法也有不足的地方,既然做到通用,那如果是特殊的那就满足不了,任何事情都是这样,想要灵活和想要具体就像鱼和熊掌一样。

  最后附上代码类。
  

 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 }                        

 


以上是关于怎么让重写ToString()变成不再是体力活的主要内容,如果未能解决你的问题,请参考以下文章

Java 在啥情况下要重写toString

GO程序员的一些快捷开发工具,告别体力活

Eclipse重写toString()出现错误,求怎么解决?

java里面的 toString()方法重写是怎么回事啊?

怎么重写toString()才能把数组打印出来

c#如何重载ToString方法...