首页 > 学院 > 开发设计 > 正文

【干货】通用静态扩展类

2019-11-17 03:12:18
字体:
来源:转载
供稿:网友

【干货】通用静态扩展类

  在开发过程中,我们通常会将常用方法封装在一个辅助类里,提高可复用性。自.net3.5以后,.net已经支持通过this关键字为类进行扩展,目前只可以扩展静态方法,这对于常用方法的封装是很有用的。比如,给asp.net的Page类扩展WriteJson方法,直接在页面代码里用 this.WriteJson(....),即可轻松调用扩展的静态方法。以下是在工作中积累的部分代码,后续会持续更新,直接上干货:

  1 using System;  2 using System.Collections.Generic;  3 using System.Web;  4 using System.Web.UI;  5 using Newtonsoft.Json;  6 using Newtonsoft.Json.Converters;  7   8 namespace www.ideek.cn  9 { 10     /// <summary> 11     /// 通用静态扩展类 12     /// </summary> 13     public static class ExtendMethod 14     { 15         /// <summary> 16         /// 页面输出Json数据格式 17         /// </summary> 18         /// <param name="page"></param> 19         /// <param name="jsonStr"></param> 20         public static void WriteJson(this Page page, string jsonStr) 21         { 22             page.Response.WriteJson(jsonStr); 23         } 24  25         /// <summary> 26         /// 页面输出字符串 27         /// </summary> 28         /// <param name="page"></param> 29         /// <param name="jsonStr"></param> 30         public static void WriteString(this Page page, string str) 31         { 32             page.Response.WriteString(str); 33         } 34  35         /// <summary> 36         /// 页面输出Json数据格式 37         /// </summary> 38         /// <param name="page"></param> 39         /// <param name="jsonStr"></param> 40         public static void WriteJson(this HttPResponse response, string jsonStr) 41         { 42             response.ContentType = "application/json"; 43             response.Charset = "UTF-8"; 44             response.Write(jsonStr); 45             response.End(); 46         } 47  48         /// <summary> 49         /// 页面输出字符串 50         /// </summary> 51         /// <param name="page"></param> 52         /// <param name="jsonStr"></param> 53         public static void WriteString(this HttpResponse response, string str) 54         { 55             response.ContentType = "text/plain"; 56             response.Charset = "UTF-8"; 57             response.Write(str); 58             response.End(); 59         } 60  61         #region 格式转化 62  63         /// <summary> 64         /// 取日期最小时间 65         /// </summary> 66         /// <param name="dt"></param> 67         /// <returns></returns> 68         public static DateTime GetDateTimeMin(this object dt) 69         { 70             return Convert.ToDateTime(Convert.ToDateTime(dt).ToString("yyyy-MM-dd 00:00:00")); 71         } 72         /// <summary> 73         /// 取日期最大时间 74         /// </summary> 75         /// <param name="dt"></param> 76         /// <returns></returns> 77         public static DateTime GetDateTimeMax(this object dt) 78         { 79             return Convert.ToDateTime(Convert.ToDateTime(dt).ToString("yyyy-MM-dd 23:59:59")); 80         } 81  82         /// <summary> 83         /// 转换为Int型,为空返回0 84         /// </summary> 85         /// <param name="obj"></param> 86         /// <returns></returns> 87         public static int ToIntValue(this object obj) 88         { 89             int result; 90             if (obj == null) return 0; 91             return int.TryParse(obj.ToString().Trim(), out result) ? result : 0; 92         } 93  94         /// <summary> 95         /// 转换为Int64(long)型,为空返回0 96         /// </summary> 97         /// <param name="obj"></param> 98         /// <returns></returns> 99         public static long ToLongValue(this object obj)100         {101             long result = 0;102             if (obj == null) return result;103             return long.TryParse(obj.ToString().Trim(), out result) ? result : 0;104         }105 106         /// <summary>107         /// 转换为decimal型,为空返回0108         /// </summary>109         /// <param name="obj"></param>110         /// <returns></returns>111         public static decimal ToDecimalValue(this object obj)112         {113             decimal result = 0;114             if (obj == null) return result;115             return decimal.TryParse(obj.ToString().Trim(), out result) ? result : 0;116         }117 118         /// <summary>119         /// 转换为float型,为空返回0120         /// </summary>121         /// <param name="obj"></param>122         /// <returns></returns>123         public static float ToFloatValue(this object obj)124         {125             float result = 0;126             if (obj == null) return result;127             return float.TryParse(obj.ToString().Trim(), out result) ? result : 0;128         }129 130         /// <summary>131         /// 转为String类型,为null返回""132         /// </summary>133         /// <param name="obj"></param>134         /// <returns></returns>135         public static string ToStringValue(this object obj)136         {137             if (obj == null) return string.Empty;138             return obj.ToString().Trim();139         }140 141         /// <summary>142         /// 转为DateTime类型,为null返回当前时间143         /// </summary>144         /// <param name="obj"></param>145         /// <returns></returns>146         public static DateTime ToDateTimeValue(this object obj)147         {148             if (obj == null) return DateTime.Now;149             return Convert.ToDateTime(obj);150         }151 152         /// <summary>153         /// 转为DateTime?类型154         /// </summary>155         /// <param name="obj"></param>156         /// <returns></returns>157         public static DateTime? ToDateTime(this object obj)158         {159             var result = new Nullable<DateTime>();160             if (!string.IsNullOrEmpty(obj.ToStringValue()))161             {162                 DateTime dt;163                 if (DateTime.TryParse(obj.ToString().Trim(), out dt))164                     result = dt;165             }166             return result;167         }168 169         #endregion170     }171 }

  其中,页面输出采用Newtonsoft.Json开源类库,关于Newtonsoft.Json的用法,请参考:https://github.com/JamesNK/Newtonsoft.Json

 爱戴客 - 可穿戴设备第一门户 网址:www.ideek.cn 微博:www.weibo.com/ideek 为可穿戴设备爱好者提供最新、最专业的可穿戴设备产品和资讯信息。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表