大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > 通用静态扩展类

通用静态扩展类

关键词:干货静态扩展通用  阅读(704) 赞(15)

[摘要]本文是对通用静态扩展类的讲解,与大家分享。

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

 using System;
 using System.Collections.Generic;
 using System.Web;
 using System.Web.UI;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Converters;
 
 namespace www.ideek.cn
 {
     /// <summary>
     /// 通用静态扩展类
     /// </summary>
     public static class ExtendMethod
     {
         /// <summary>
         /// 页面输出Json数据格式
         /// </summary>
         /// <param name="page"></param>
         /// <param name="jsonStr"></param>
         public static void WriteJson(this Page page, string jsonStr)
         {
             page.Response.WriteJson(jsonStr);
         }
 
         /// <summary>
         /// 页面输出字符串
         /// </summary>
         /// <param name="page"></param>
         /// <param name="jsonStr"></param>
         public static void WriteString(this Page page, string str)
         {
             page.Response.WriteString(str);
         }
 
         /// <summary>
         /// 页面输出Json数据格式
         /// </summary>
         /// <param name="page"></param>
         /// <param name="jsonStr"></param>
         public static void WriteJson(this HttpResponse response, string jsonStr)
         {
             response.ContentType = "application/json";
             response.Charset = "UTF-8";
             response.Write(jsonStr);
             response.End();
         }
 
         /// <summary>
         /// 页面输出字符串
         /// </summary>
         /// <param name="page"></param>
         /// <param name="jsonStr"></param>
         public static void WriteString(this HttpResponse response, string str)
         {
             response.ContentType = "text/plain";
             response.Charset = "UTF-8";
             response.Write(str);
             response.End();
         }
 
         #region 格式转化
 
         /// <summary>
         /// 取日期最小时间
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
         public static DateTime GetDateTimeMin(this object dt)
         {
             return Convert.ToDateTime(Convert.ToDateTime(dt).ToString("yyyy-MM-dd 00:00:00"));
         }
         /// <summary>
         /// 取日期最大时间
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
         public static DateTime GetDateTimeMax(this object dt)
         {
             return Convert.ToDateTime(Convert.ToDateTime(dt).ToString("yyyy-MM-dd 23:59:59"));
         }
 
         /// <summary>
         /// 转换为Int型,为空返回0
         /// </summary>
         /// <param name="obj"></param>
         /// <returns></returns>
         public static int ToIntValue(this object obj)
         {
             int result;
             if (obj == null) return 0;
             return int.TryParse(obj.ToString().Trim(), out result) ? result : 0;
         }
 
         /// <summary>
         /// 转换为Int64(long)型,为空返回0
         /// </summary>
         /// <param name="obj"></param>
         /// <returns></returns>
         public static long ToLongValue(this object obj)
         {
             long result = 0;
             if (obj == null) return result;
             return long.TryParse(obj.ToString().Trim(), out result) ? result : 0;
         }
 
         /// <summary>
         /// 转换为decimal型,为空返回0
         /// </summary>
         /// <param name="obj"></param>
         /// <returns></returns>
         public static decimal ToDecimalValue(this object obj)
         {
             decimal result = 0;
             if (obj == null) return result;
             return decimal.TryParse(obj.ToString().Trim(), out result) ? result : 0;
         }
 
         /// <summary>
         /// 转换为float型,为空返回0
         /// </summary>
         /// <param name="obj"></param>
         /// <returns></returns>
         public static float ToFloatValue(this object obj)
         {
             float result = 0;
             if (obj == null) return result;
             return float.TryParse(obj.ToString().Trim(), out result) ? result : 0;
         }
 
         /// <summary>
         /// 转为String类型,为null返回""
         /// </summary>
         /// <param name="obj"></param>
         /// <returns></returns>
         public static string ToStringValue(this object obj)
         {
             if (obj == null) return string.Empty;
             return obj.ToString().Trim();
         }
 
         /// <summary>
         /// 转为DateTime类型,为null返回当前时间
         /// </summary>
         /// <param name="obj"></param>
         /// <returns></returns>
         public static DateTime ToDateTimeValue(this object obj)
         {
             if (obj == null) return DateTime.Now;
             return Convert.ToDateTime(obj);
         }
 
         /// <summary>
         /// 转为DateTime?类型
         /// </summary>
         /// <param name="obj"></param>
         /// <returns></returns>
         public static DateTime? ToDateTime(this object obj)
         {
             var result = new Nullable<DateTime>();
             if (!string.IsNullOrEmpty(obj.ToStringValue()))
             {
                 DateTime dt;
                 if (DateTime.TryParse(obj.ToString().Trim(), out dt))
                     result = dt;
             }
             return result;
         }
 
         #endregion
     }
 }

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

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



相关评论