【干貨】通用靜態擴展類


  在開發過程中,我們通常會將常用方法封裝在一個輔助類里,提高可復用性。自.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型,為空返回0
108         /// </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型,為空返回0
120         /// </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         #endregion
170     }
171 }

  其中,頁面輸出采用Newtonsoft.Json開源類庫,關於Newtonsoft.Json的用法,請參考:https://github.com/JamesNK/Newtonsoft.Json

 

 愛戴客 - 可穿戴設備第一門戶
 網址:www.ideek.cn
 微博:www.weibo.com/ideek
 為可穿戴設備愛好者提供最新、最專業的可穿戴設備產品和資訊信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM