zoukankan      html  css  js  c++  java
  • DataRow的泛型扩展方法

    最近发现以前写的下面两个方法都有错误,default(string) 是null ,null is string 返回false

     static class Extend

        {
            const string def = "dd";
            public static T GetValue<T>(this DataRow dr, string name)
            {
                try
                {
                    if (dr[name] == DBNull.Value)
                    {
                        object o = def;
                        return (T)o;
                    }
                    else
                    {
                        return (T)dr[name];
                    }
                }
                catch (ArgumentException ex)
                {
                    T t = default(T);
                    object obj;
                    if (t is ValueType)
                    {
                        obj = t;
                    }
                    else if (t is string)
                    {
                        obj = def;
                    }
                    else
                    {
                        obj = t;
                    }
                    return (T)obj;
                }

                //if (dr[name] == DBNull.Value)
                //{
                //    T item = default(T);
                //    object obj;
                //    if (item is ValueType)
                //    {
                //        obj = 0;

                //    }
                //    else
                //    {
                //        obj = "";
                //    }
                //    return (T)obj;
                //}
                //else
                //{
                //    T res = (T)dr[name];
                //    return res;
                //}
            }

        }

    public static class MyExtend
        {

            public static T GetValue<T>(this DataRow dr, string name)
            {
                try
                {
                    if (dr[name] == DBNull.Value)
                    {                    
                        return GetDefault<T>();
                    }
                    else
                    {
                        return (T)dr[name];
                    }
                }
                catch (ArgumentException ex)
                {
                    return GetDefault<T>();
                }
            }

            static T GetDefault<T>()
            {
                T t = default(T);
                object obj;
                if (t is string)
                {
                    obj = "";
                }
                else
                {
                    obj = t;
                }
                return (T)obj;
            }
        } 

  • 相关阅读:
    安装activeMQ(解压版)
    java匿名发送邮件(不需要登录)
    poi excel导入整数数字自动加小数点解决
    读取excel表中的数据
    DES加密解密实现
    验证码实现(google)
    下载文件到电脑本地
    Properties条件查询(适用于StorageAPI操作数据库)
    java位运算
    python测试开发工具库汇总(转载)
  • 原文地址:https://www.cnblogs.com/mxw09/p/1888075.html
Copyright © 2011-2022 走看看