C# 工具类--类型转换的泛型方法
2010-12-11 17:12
447 查看
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; } } }
相关文章推荐
- C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串的方法
- C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串的方法
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
- 17.2015.08.04第十八节课 C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)
- 常用类型转换方法工具类
- 在C#中将任意数值类型数据与字节数组相互转换的一个方法
- C#中使用where子句限制泛型方法的泛型类型
- C#调用VC DLL接口函数参数类型转换方法介绍
- C# 泛型3--类型转换
- C# 类型转换方法
- 利用泛型和反射编写通用基础类型转换方法
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(7):服务器端和客户端数据类型的自动转换:泛型集合类型
- beanutils工具类将字符串转换成Date(java.util.Date)数据类型的方法
- C#调用VC DLL接口函数参数类型转换方法介绍
- C#中三种方法转换字符串变成数值类型
- C# 控制台输入输出非字符串类型数据的方法[进制数字转换为八进制数字]
- C#学习笔记三: C#2.0泛型 可控类型 匿名方法和迭代器
- Android String类型转换为float、double和int的工具类方法
- C#中各种数据类型转换的方法的类
- C# 泛型 无法将类型xx隐式转换为“T”