zoukankan      html  css  js  c++  java
  • 怎么让重写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 }                        
  • 相关阅读:
    LINQ中selectManay操作符(五)
    LINQ中select操作符(四)
    高效并发进阶-白银
    JVM回收算法
    一个类是怎么被JVM执行的
    一纸理解JVM
    单例模式
    深入理解Spring AOP思想
    深入理解Spring IOC工作原理
    HashMap扩容全过程
  • 原文地址:https://www.cnblogs.com/jeremylin-Hu/p/9419192.html
Copyright © 2011-2022 走看看