用于dbnull的数据转换。因为用convert.to无法转换dbnull类型

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

namespace RM.Web
{
/// <summary>
/// 用于dbnull的数据转换。因为用convert.to无法转换dbnull类型
/// </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
{
//return source.IsTargetType<T>() ? source.ToTargetTypeConvert<T>() : defaultValue;
return source is DBNull ? defaultValue : source.ToTargetTypeConvert<T>();
}
}
}

时间: 2024-10-05 23:40:43

用于dbnull的数据转换。因为用convert.to无法转换dbnull类型的相关文章

SQL Server中使用convert进行日期转换

SQL Server中使用convert进行日期转换 一般存入数据库中的时间格式为yyyy-mm-ddhh:mm:ss 如果要转换为yyyy-mm-dd  短日期格式.可以使用convert函数.下面是sqlserver帮助中关于convert函数的声明: 使用 CONVERT: CONVERT (data_type[(length)],expression[,style]) 参数 expression 是任何有效的 Microsoft® SQL Server™ 表达式.data_type 目标

Convert.ChangeType不能处理Nullable类型的解决办法(转)

https://www.cnblogs.com/patrickyu/p/3211115.html 在做一个ORMapping功能的时候发现,Convert.ChangeType不能处理nullable类型,比如int?. 解决办法也很简单,贴出完整的代码(大部分代码来自网络),注意下面代码没经过完整测试,不要直接用在项目里: public delegate void SetValue<T>(T value); public static class ORMapping<T> whe

convert图像格式批量转换

问题:利用GMT绘制生成了eps格式的图像,为了将图像插入到word中,且保持较高的分辨率,利用convert进行图像格式转换,将eps转换成tiff格式. code: for i in *.psdoecho $iname=`basename $i .ps`convert $i ${name}.tiffdone 出现错误: tran.sh: line 2: syntax error near unexpected token `$'do\r'''ran.sh: line 2: `do解决方法:

sqlserver convert 日期时间 转换格式化

Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16   Select CONVERT(varchar(100), GETDATE(), 112): 20060516 Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 Select

Sql Server Convert函数转换Datetime类型数据

0 Feb 22 2006 4:26PM CONVERT(CHAR(19), CURRENT_TIMESTAMP, 0) 1 02/22/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 1) 2 06.02.22 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 2) 3 22/02/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 3) 4 22.02.06 CONVERT(CHAR(8), CURRENT_TIM

Reachability.h (用于判定iPhone是否连接网络)和如何判断连接类型

+ (NSString *)getNetworkTypeFromStatusBar { NSString *networkType = @""; if (IOS_VERSION >= 7.0) { // http://www.cnblogs.com/wudan7/p/3587889.html CTTelephonyNetworkInfo *telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init]; LOG(@&quo

Convert、Parse、TryParse、(int) 区别

Convert.ToInt32.int.Parse(Int32.Parse).int.TryParse.(int) 四者都可以解释为将类型转换为 int,那它们的区别是什么呢? Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse: Convert.ToInt32 参数为 null 时,返回 0: int.Parse 参数为 null 时,抛出异常. Convert.ToInt32 参数为 "" 时,抛

C#中 Convert与Parse的区别

1.Convert.ToDouble与Double.Parse的区别.实际上Convert.ToDouble与 Double.Parse 较为类似,实际上 Convert.ToDouble内部调用了 Double.Parse: (1)对于参数为null的时候:Convert.ToDouble参数为 null 时,返回 0.0: Double.Parse 参数为 null 时,抛出异常. (2)对于参数为""的时候:Convert.ToDouble参数为 "" 时,抛

C# Convert与Parse的区别

一.Convert.ToDouble与Double.Parse的区别 Convert.ToDouble 内部调用了 Double.Parse (1)对于参数为null的时候: Convert.ToDouble 参数为 null 时,返回 0.0: Double.Parse 参数为 null 时,抛出异常. (2)对于参数为""的时候: Convert.ToDouble 参数为 "" 时,抛出异常: Double.Parse 参数为 "" 时,抛出