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

  • 相关阅读:
    AC自动机【学习笔记】
    SCOI2016 背单词【Trie树,贪心】
    【字符串算法】字典树Trie入门
    USACO 1.3 Name That Number【暴搜】
    MapReduce分组
    MapReduce排序
    博客园添加访问人数统计
    MapReduce的分区
    MapReduce的计数器
    MapReduce部分源码解读(一)
  • 原文地址:https://www.cnblogs.com/wolf12/p/4691147.html
Copyright © 2011-2022 走看看