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 }                        
  • 相关阅读:
    vc++ 错误 CreateWindow
    设置某个页面的编码方式
    部署Struts2框架
    oracle之约束
    java web开发(三)、Ajax技术
    vs2008 安装出错 Microsoft Visual Studio Web 组件安装失败
    java web开发(二)、Servlet技术
    WLS Zip Distribution for Oracle WebLogic Server 12.1.1.0安装
    MyEclipse配置Weblogic服务器
    js 未结束的字符串常量错误解决方法
  • 原文地址:https://www.cnblogs.com/jeremylin-Hu/p/9419192.html
Copyright © 2011-2022 走看看