zoukankan      html  css  js  c++  java
  • DNN学习笔记代码学习:Null 荣

    using System;
    using System.Reflection;

    namespace WebApplication1
    {
     /// <summary>
     /// 对空值的处理。
     /// </summary>
     public class Null
     {
      public Null()
      {
       //
       // TODO: 在此处添加构造函数逻辑
       //
      }

      // 各类型的空值表示值

      public static short NullShort
      {
       get
       {
        return -1;
       }
      }

      public static int NullInteger
      {
       get
       {
        return -1;
       }
      }

      public static Single NullSingle
      {
       get
       {
        return Single.MinValue;
       }
      }

      public static double NullDouble
      {
       get
       {
        return double.MinValue;
       }
      }

      public static decimal NullDecimal
      {
       get
       {
        return decimal.MinValue;
       }
      }

      public static DateTime NullDate
      {
       get
       {
        return DateTime.MinValue;
       }
      }

      public static string NullString
      {
       get
       {
        return "";
       }
      }

      public static bool NullBoolean
      {
       get
       {
        return false;
       }
      }

      public static Guid NullGuid
      {
       get
       {
        return Guid.Empty;
       }
      }

      /// <summary>
      /// 根据类型设置空值。如果objValue值不为空,返回。
      /// </summary>
      /// <param name="objValue"></param>
      /// <param name="objField"></param>
      /// <returns></returns>
      public static object SetNull(object objValue, object objField)
      {
       object ret;
       if (objValue is DBNull)
       {
        if (objField is short)
        {
         ret = NullShort;
        }
        else if (objField is int)
        {
         ret = NullInteger;
        }
        else if (objField is Single)
        {
         ret = NullSingle;
        }
        else if (objField is double)
        {
         ret = NullDouble;
        }
        else if (objField is decimal)
        {
         ret = NullDecimal;
        }
        else if (objField is DateTime)
        {
         ret = NullDate;
        }
        else if (objField is string)
        {
         ret = NullString;
        }
        else if (objField is bool)
        {
          ret = NullBoolean;
        }
        else if (objField is Guid)
        {
         ret = NullGuid;
        }
        else
        {
         ret = null;
        }
       }
       else
       {
        ret = objValue;
       }

       return ret;
      }

      /// <summary>
      /// 根据PropertyInfo来设计空值。
      /// </summary>
      /// <param name="objPropertyInfo"></param>
      /// <returns></returns>
      public static object SetNull(PropertyInfo objPropertyInfo)
      {
       object ret;
       switch (objPropertyInfo.PropertyType.ToString())
       {
        case "System.Int16":
         ret = NullShort;
         break;
        case "System.Int32":
        case "System.Int64":
         ret = NullInteger;
         break;
        case "System.Single":
         ret = NullSingle;
         break;
        case "System.Double":
         ret = NullDouble;
         break;
        case "System.Decimal":
         ret = NullDecimal;
         break;
        case "System.DateTime":
         ret = NullDate;
         break;
        case "System.String":
        case "System.Char":
         ret = NullString;
         break;
        case "System.Boolean":
         ret = NullBoolean;
         break;
        case "System.Guid":
         ret = NullGuid;
         break;
        default:
         Type pType = objPropertyInfo.PropertyType;
         if (pType.BaseType.Equals(typeof(System.Enum)))
         {
          Array objEnumValues = Enum.GetValues(pType);
          Array.Sort(objEnumValues);
          ret = Enum.ToObject(pType, objEnumValues.GetValue(0));
         }
         else
         {
          ret = null;
         }
         break;
       }
       return ret;
      }

      /// <summary>
      /// 根据FieldInfo来设计空值。
      /// </summary>
      /// <param name="objFieldInfo"></param>
      /// <returns></returns>
      public static object SetNull(FieldInfo objFieldInfo)
      {
       object ret;
       switch (objFieldInfo.FieldType.ToString())
       {
        case "System.Int16":
         ret = NullShort;
         break;
        case "System.Int32":
        case "System.Int64":
         ret = NullInteger;
         break;
        case "System.Single":
         ret = NullSingle;
         break;
        case "System.Double":
         ret = NullDouble;
         break;
        case "System.Decimal":
         ret = NullDecimal;
         break;
        case "System.DateTime":
         ret = NullDate;
         break;
        case "System.String":
        case "System.Char":
         ret = NullString;
         break;
        case "System.Boolean":
         ret = NullBoolean;
         break;
        case "System.Guid":
         ret = NullGuid;
         break;
        default:
         Type pType = objFieldInfo.FieldType;
         if (pType.BaseType.Equals(typeof(System.Enum)))
         {
          Array objEnumValues = Enum.GetValues(pType);
          Array.Sort(objEnumValues);
          ret = Enum.ToObject(pType, objEnumValues.GetValue(0));
         }
         else
         {
          ret = null;
         }
         break;
       }
       return ret;
      }

      /// <summary>
      /// 根据数据类型,取得空值。
      ///  如果objField为空,则返回objDBNull。
      /// </summary>
      /// <param name="objField"></param>
      /// <param name="objDBNull"></param>
      /// <returns></returns>
      public static object GetNull(object objField, object objDBNull)
      {
       object ret = objField;
       if (objField == null)
       {
        ret = objDBNull;
       }
       else if (objField is short)
       {
        if (Convert.ToInt16(objField) == NullShort)
        {
         ret = objDBNull;
        }
       }
       else if (objField is int)
       {
        if (Convert.ToInt32(objField) == NullInteger)
        {
         ret = objDBNull;
        }
       }
       else if (objField is Single)
       {
        if (Convert.ToSingle(objField) == NullSingle)
        {
         ret = objDBNull;
        }
       }
       else if (objField is double)
       {
        if (Convert.ToDouble(objField) == NullDouble)
        {
         ret = objDBNull;
        }
       }
       else if (objField is decimal)
       {
        if (Convert.ToDecimal(objField) == NullDecimal)
        {
         ret = objDBNull;
        }
       }
       else if (objField is DateTime)
       {
        if (Convert.ToDateTime(objField) == NullDate.Date)
        {
         ret = objDBNull;
        }
       }
       else if (objField is string)
       {
        if (objField == null)
        {
         ret = objDBNull;
        }
       }
       else if (objField is bool)
       {
        if (Convert.ToBoolean(objField) == NullBoolean)
        {
         ret = objDBNull;
        }
       }
       else if (objField is Guid)
       {
        if (((Guid)objField).Equals(NullGuid))
        {
         ret = objDBNull;
        }
       }

       return ret;
      }

      /// <summary>
      /// 判断某个值是否为空值
      /// </summary>
      /// <param name="objField"></param>
      /// <returns></returns>
      public static bool IsNull(object objField)
      {
       bool ret;
       if (objField != null)
       {
        if (objField is int)
        {
         ret = objField.Equals(NullInteger);
        }
        else if (objField is Single)
        {
         ret = objField.Equals(NullSingle);
        }
        else if (objField is double)
        {
         ret = objField.Equals(NullDouble);
        }
        else if (objField is decimal)
        {
         ret = objField.Equals(NullDecimal);
        }
        else if (objField is DateTime)
        {
         DateTime objDate = Convert.ToDateTime(objField);
         ret = objDate.Equals(NullInteger);
        }
        else if (objField is string)
        {
         ret = objField.Equals(NullString);
        }
        else if (objField is bool)
        {
         ret = objField.Equals(NullBoolean);
        }
        else if (objField is Guid)
        {
         ret = objField.Equals(NullGuid);
        }
        else
        {
         ret = false;
        }
       }
       else
       {
        ret = true;
       }
       return ret;
      }
     }
    }

  • 相关阅读:
    springboot + driud连接池踩的坑____新手学习
    tomcat的安装
    无限极分类
    javascript ECMAscript 和node.js commonJs之间的关系
    变量名,引用和地址
    java中闭包的理解
    thinkphp 模型的curd
    thinkphp之migration 迁移文件的使用
    验证ArrayList是线程不安全的集合
    一个java小程序,盗取插入的U盘中的数据。
  • 原文地址:https://www.cnblogs.com/admin11/p/200313.html
Copyright © 2011-2022 走看看