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

  • 相关阅读:
    VMware安装CentOS6.8
    YouZack英语学习网站,英语四六级的福音
    WIN7环境下配置vscode c++环境
    连续出现的字符
    丛林中的路
    兔子与樱花
    C++语言基础--02_运算符
    C++语言基础--01_合法标识符与基本数据类型
    C++语言基础--0_前言
    字符串笔试题
  • 原文地址:https://www.cnblogs.com/wolf12/p/4691147.html
Copyright © 2011-2022 走看看