zoukankan      html  css  js  c++  java
  • 用于dbnull的数据转换。因为用convert.to无法转换dbnull类型

    /// <summary>
    /// add by wolf
    /// </summary>
    public static class ExtendObject
    {
    public static bool IsTargetType<T>(this object source) where T : IConvertible
    {
    Type targetType = typeof(T);


    var tryParse = targetType.GetMethod("TryParse", BindingFlags.Static | BindingFlags.Public, Type.DefaultBinder,
    new Type[] { typeof(T), targetType.MakeByRefType() },
    new ParameterModifier[] { new ParameterModifier(2) });


    if (tryParse == null)
    return false;


    var parameters = new object[] { source, Activator.CreateInstance(targetType) };

    if (source is DBNull)
    {
    return false;
    }
    return (bool)tryParse.Invoke(null, parameters);
    }


    public static T ToTargetType<T>(this object source) where T : IConvertible
    {
    Type targetType = typeof(T);


    var parse = targetType.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, Type.DefaultBinder,
    new Type[] { typeof(object) },
    new ParameterModifier[] { new ParameterModifier(1) });


    if (parse == null)
    return default(T);


    return (T)parse.Invoke(null, new object[] { source });
    }


    public static T ToTargetTypeConvert<T>(this object source) where T : IConvertible
    {
    Type targetType = typeof(T);

    return (T)Convert.ChangeType(source, targetType);

    }


    public static T AsTargetType<T>(this object source, T defaultValue) where T : IConvertible
    {
    if (source is DBNull)
    {

    }
    object retunVal;
    try
    {
    retunVal = source.ToTargetTypeConvert<T>();
    }
    catch (Exception)
    {
    return defaultValue;
    }

    return (T)retunVal;
    }
    }

  • 相关阅读:
    RAC环境下ORACLE序列缓存导致序列混乱
    zzu edu
    windows下的神器
    关于VO、PO的理解——JAVA的(PO,VO,TO,BO,DAO,POJO)解释
    enum学习
    maven 引入本地 jar
    eclipse F6和F8的问题
    记一个搜索网盘资源的网站
    多表查询, 聚集查询和分组查询
    winserver2008安装tomcat+mysql+httpd+redis环境
  • 原文地址:https://www.cnblogs.com/wolf12/p/4691147.html
Copyright © 2011-2022 走看看