| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
m47c
10年前发布

C# 工具类--类型转换的泛型方法

    using System;        using System.Collections.Generic;        using System.Linq;        using System.Text;        using System.Data;        namespace LinqPractice        {            class Utility            {                public static T ConvertDataRow<T>(DataRow dr, string columnName,T defaultValue)                {                    if (dr.Table.Columns.Contains(columnName))                    {                        return ConvertType<T>(dr[columnName],defaultValue);                    }                    return default(T);                }                /// <summary>                /// 泛型数据类型转换                /// </summary>                /// <typeparam name="T">自定义数据类型</typeparam>                /// <param name="value">传入需要转换的值</param>                /// <param name="defaultValue">默认值</param>                /// <returns></returns>                public static T ConvertType<T>(object value,T defaultValue)                {                    try                    {                        return (T)ConvertToT<T>(value,defaultValue);                    }                    catch                    {                        return default(T);                    }                }                /// <summary>                /// 转换数据类型                /// </summary>                /// <typeparam name="T">自定义数据类型</typeparam>                /// <param name="myvalue">传入需要转换的值</param>                /// <param name="defaultValue">默认值</param>                /// <returns></returns>                private static object ConvertToT<T>(object myvalue,T defaultValue)                {                    TypeCode typeCode = System.Type.GetTypeCode(typeof(T));                    if (myvalue != null)                    {                        string value = Convert.ToString(myvalue);                        switch (typeCode)                        {                            case TypeCode.Boolean:                                bool flag = false;                                if (bool.TryParse(value, out flag))                                {                                    return flag;                                }                                break;                            case TypeCode.Char:                                char c;                                if (Char.TryParse(value, out c))                                {                                    return c;                                }                                break;                            case TypeCode.SByte:                                sbyte s = 0;                                if (SByte.TryParse(value, out s))                                {                                    return s;                                }                                break;                            case TypeCode.Byte:                                byte b = 0;                                if (Byte.TryParse(value, out b))                                {                                    return b;                                }                                break;                            case TypeCode.Int16:                                Int16 i16 = 0;                                if (Int16.TryParse(value, out i16))                                {                                    return i16;                                }                                break;                            case TypeCode.UInt16:                                UInt16 ui16 = 0;                                if (UInt16.TryParse(value, out ui16))                                    return ui16;                                break;                            case TypeCode.Int32:                                int i = 0;                                if (Int32.TryParse(value, out i))                                {                                    return i;                                }                                break;                            case TypeCode.UInt32:                                UInt32 ui32 = 0;                                if (UInt32.TryParse(value, out ui32))                                {                                    return ui32;                                }                                break;                            case TypeCode.Int64:                                Int64 i64 = 0;                                if (Int64.TryParse(value, out i64))                                {                                    return i64;                                }                                break;                            case TypeCode.UInt64:                                UInt64 ui64 = 0;                                if (UInt64.TryParse(value, out ui64))                                    return ui64;                                break;                            case TypeCode.Single:                                Single single = 0;                                if (Single.TryParse(value, out single))                                {                                    return single;                                }                                break;                            case TypeCode.Double:                                double d = 0;                                if (Double.TryParse(value, out d))                                {                                    return d;                                }                                break;                            case TypeCode.Decimal:                                decimal de = 0;                                if (Decimal.TryParse(value, out de))                                {                                    return de;                                }                                break;                            case TypeCode.DateTime:                                DateTime dt;                                if (DateTime.TryParse(value, out dt))                                {                                    return dt;                                }                                break;                            case TypeCode.String:                                if (!string.IsNullOrEmpty(value))                                {                                    return value.ToString();                                }                                break;                        }                    }                    return defaultValue;                }            }        }