zoukankan      html  css  js  c++  java
  • c#简单类型转换As<T>

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;

    namespace Uilt
    {

    //返回类
    public static class ObjectHelper
    {
    //简单类型转换
    public static T As<T>(this object value, T defaultValue = default(T))
    {
    T res = defaultValue;
    if (value == null)//为null返回默认值
    {
    return res;
    }
    object resValue = null;
    Type fromType = value.GetType();
    Type toType = typeof(T);
    TypeCode fromTypeCode = Type.GetTypeCode(fromType);//来源类型
    TypeCode toTypeCode = Type.GetTypeCode(toType);//结果类型
    try
    {
    switch (toTypeCode)
    {

    case TypeCode.Boolean:
    #region bool 转换
    switch (fromTypeCode)
    {
    case TypeCode.SByte:
    resValue = (sbyte)value > 0;
    break;
    case TypeCode.Byte:
    resValue = (byte)value > 0;
    break;
    case TypeCode.Int16:
    resValue = (short)value > 0;
    break;
    case TypeCode.UInt16:
    resValue = (ushort)value > 0;
    break;
    case TypeCode.Int32:
    resValue = (int)value > 0;
    break;
    case TypeCode.UInt32:
    resValue = (uint)value != 0;
    break;
    case TypeCode.Int64:
    resValue = (long)value > 0L;
    break;
    case TypeCode.UInt64:
    resValue = (ulong)value > 0L;
    break;
    case TypeCode.String:
    try
    {
    resValue = int.Parse((string)value) > 0;
    }
    catch
    {
    }
    break;
    }
    resValue = ((IConvertible)value).ToBoolean(null);
    #endregion
    break;
    case TypeCode.Char:
    resValue = ((IConvertible)value).ToChar(null);
    break;
    case TypeCode.SByte:
    resValue = ((IConvertible)value).ToSByte(null);

    break;
    case TypeCode.Byte:
    resValue = ((IConvertible)value).ToByte(null);

    break;
    case TypeCode.Int16:
    resValue = ((IConvertible)value).ToInt16(null);
    break;
    case TypeCode.UInt16:
    resValue = ((IConvertible)value).ToUInt16(null);
    break;
    case TypeCode.Int32:
    resValue = ((IConvertible)value).ToInt32(null);
    break;
    case TypeCode.UInt32:
    resValue = ((IConvertible)value).ToUInt32(null);

    break;
    case TypeCode.Int64:
    resValue = ((IConvertible)value).ToInt64(null);

    break;
    case TypeCode.UInt64:
    resValue = ((IConvertible)value).ToUInt64(null);

    break;
    case TypeCode.Single:
    resValue = ((IConvertible)value).ToSingle(null);

    break;
    case TypeCode.Double:
    resValue = ((IConvertible)value).ToDouble(null);
    break;
    case TypeCode.Decimal:
    resValue = ((IConvertible)value).ToDecimal(null);
    break;
    case TypeCode.DateTime:
    resValue = ((IConvertible)value).ToDateTime(null);
    break;
    case TypeCode.String:
    resValue = (value == null ? string.Empty : ((IConvertible)value).ToString(null));
    break;
    default:
    resValue = value;
    break;
    }


    if (resValue != null)
    {
    res = (T)resValue;
    }
    }
    catch (Exception)
    {

    }
    return res;
    }
    }
    }

  • 相关阅读:
    如何实现清浮动(转载)
    js动态删除某一行,内容超出单元格后超出的部分用省略号代替
    jquery页面隐藏和展开之间切换
    比较jquery中的after(),append(),appendTo()方法
    如何使用git管理代码
    网页游戏常见外挂原理及防御
    JQuery实现页面刷新后菜单保留鼠标点击addclass的样式
    【查询】—Entity Framework实例详解
    SQL Server清除连接过的服务器名称列表
    WebBrowser.ExecWB的完整说明
  • 原文地址:https://www.cnblogs.com/Wilson6/p/12147292.html
Copyright © 2011-2022 走看看