您的位置:首页 > 编程语言 > C#

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# 工具 ui object string
相关文章推荐