c#写扩展方法

简介: 学习MVC时,学会了写扩展方法,用起来很方便。 using System; using System.Collections.Generic; using System.

学习MVC时,学会了写扩展方法,用起来很方便。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Text;

namespace MvcApp1.Content
{
    //<%@ Import Namespace="MvcApp1.Content" %>
    public static class MyHtmlHelper
    {
        public static string RedLable(this HtmlHelper helper, string lbstr)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<span style='color:red;'>");
            sb.Append(lbstr);
            sb.Append("</span>");
            return sb.ToString();
        }
    }
}


 

下面,用上面这个形式来写我的扩展方法

using System;
using System.Collections.Generic;
using System.Text;

namespace Tools.Common
{
    /// <summary>
    /// 数据优化公共类
    /// </summary>
    public static class DataHelper
    {
        #region 根据是否为null或""返回string类型数据
        /// <summary>
        /// 根据是否为null或""返回string类型数据
        /// </summary>
        /// <param name="obj">要获取数据的对象</param>
        /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回""</param>
        /// <returns></returns>
        public static string IsNull(this object obj, params object[] defaultValue)
        {
            if (obj == null || "".Equals(obj.ToString().Trim()))
            {
                if (defaultValue.Length == 0 || defaultValue[0]==null) return "";
                else return defaultValue[0].ToString() ;
            }
            else
            {
                return obj.ToString();
            }
        } 
        #endregion

        #region 根据是否为null或""返回long类型数据
        /// <summary>
        /// 根据是否为null或""返回long类型数据
        /// </summary>
        /// <param name="obj">要获取数据的对象</param>
        /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回long.MinValue</param>
        /// <returns></returns>
        public static long IsNull(this object obj, params long[] defaultValue)
        {
            if (obj == null || "".Equals(obj.ToString().Trim()))
            {
                if (defaultValue.Length == 0) return long.MinValue;
                else return defaultValue[0];
            }
            else
            {
                return long.Parse(obj.ToString());
            }
        }
        #endregion

        #region 根据是否为null或""返回int类型数据
        /// <summary>
        /// 根据是否为null或""返回int类型数据
        /// </summary>
        /// <param name="obj">要获取数据的对象</param>
        /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回int.MinValue</param>
        /// <returns></returns>
        public static int IsNull(this object obj, params int[] defaultValue)
        {
            if (obj == null || "".Equals(obj.ToString().Trim()))
            {
                if (defaultValue.Length == 0) return int.MinValue;
                else return defaultValue[0];
            }
            else
            {
                return int.Parse(obj.ToString());
            }
        }
        #endregion

        #region 根据是否为null或""返回DateTime类型数据
        /// <summary>
        /// 根据是否为null或""返回DateTime类型数据
        /// </summary>
        /// <param name="obj">要获取数据的对象</param>
        /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回DateTime.MinValue</param>
        /// <returns></returns>
        public static DateTime IsNull(this object obj, params DateTime[] defaultValue)
        {
            if (obj == null || "".Equals(obj.ToString().Trim()))
            {
                if (defaultValue.Length == 0) return DateTime.MinValue;
                else return defaultValue[0];
            }
            else
            {
                return DateTime.Parse(obj.ToString());
            }
        }
        #endregion

        #region 根据是否为null或""返回double类型数据
        /// <summary>
        /// 根据是否为null或""返回double类型数据
        /// </summary>
        /// <param name="obj">要获取数据的对象</param>
        /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回double.MinValue</param>
        /// <returns></returns>
        public static double IsNull(this object obj, params double[] defaultValue)
        {
            if (obj == null || "".Equals(obj.ToString().Trim()))
            {
                if (defaultValue.Length == 0) return double.MinValue;
                else return defaultValue[0];
            }
            else
            {
                return double.Parse(obj.ToString());
            }
        }
        #endregion

        #region 根据是否为null或""返回decimal类型数据
        /// <summary>
        /// 根据是否为null或""返回decimal类型数据

        /// </summary>
        /// <param name="obj">要获取数据的对象</param>
        /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回decimal.MinValue</param>
        /// <returns></returns>
        public static decimal IsNull(this object obj, params decimal[] defaultValue)
        {
            if (obj == null || "".Equals(obj.ToString().Trim()))
            {
                if (defaultValue.Length == 0) return decimal.MinValue;
                else return defaultValue[0];
            }
            else
            {
                return decimal.Parse(obj.ToString());
            }
        }
        #endregion
    }
}


调用方法:

            long L = "12312321".IsNull(long.MinValue);
            Response.Write(L);


结果:

 

 

相关文章
|
8月前
|
算法 C#
C#开源实用的工具类库,集成超过1000多种扩展方法
C#开源实用的工具类库,集成超过1000多种扩展方法
|
C# 开发者
C#扩展方法和工具类的区别
扩展方法和工具类的主要区别在于它们的作用。扩展方法旨在扩展现有的类,而工具类旨在提供一组通用且可靠的方法来执行某些任务。当需要扩展现有的类时,使用扩展方法;当需要实用函数来执行通用任务时,使用工具类。
100 0
|
编译器 C#
c# 自定义扩展方法
c# 自定义扩展方法
|
C#
c#中的扩展方法
c#中的扩展方法
105 0
C# 扩展方法 白话总结
我们在变成的时候时常遇到这样的问题,new了一个系统内的对象之后,我们想要对该对象有一个方法可是却点不出来,说明该对象本身没有声明该方法,可是微软又不允许我们去该对象的代码,怎么办? 在C# 3.
918 0