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;
    }
    }

  • 相关阅读:
    Android手势(上,下,左和右的判断)
    我爱意甲
    程序员特有的9个坏习惯
    我爱英超
    VS2010快捷键总结(一)
    C#中导出Excel总结
    MessageDAL
    GDI+ 绘图总结
    .net中绑定日期时,只显示年月日的做法
    Vb线程控制
  • 原文地址:https://www.cnblogs.com/wolf12/p/4691147.html
Copyright © 2011-2022 走看看