您好,欢迎访问一九零五行业门户网

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

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; } } }
以上就是c# 工具类--类型转换的泛型方法的内容。
其它类似信息

推荐信息