关于可空类型到基础类型的转换 问题

将一个数据转换成一个属性的类型,属性可能为可空类型时,这时报以下错误:

从“System.String”到“System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]”的强制转换无效。

将changeType方法重新改造以下就可以解决问题了:

public static object SD_ChanageType(this object value, Type convertsionType)
{
//判断convertsionType类型是否为泛型,因为nullable是泛型类,
  if (convertsionType.IsGenericType &&
    //判断convertsionType是否为nullable泛型类
  convertsionType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
{
       if (value == null || value.ToString().Length == 0)
  {
  return null;
  }

//如果convertsionType为nullable类,声明一个NullableConverter类,该类提供从Nullable类到基础基元类型的转换
       NullableConverter nullableConverter = new NullableConverter(convertsionType);
    //将convertsionType转换为nullable对的基础基元类型
        convertsionType = nullableConverter.UnderlyingType;
}
      return Convert.ChangeType(value, convertsionType);
}

时间: 2024-11-06 16:34:50

关于可空类型到基础类型的转换 问题的相关文章

你真的懂JavaScript基础类型吗

夯实Javascript基础. 基本类型有六种: null,undefined,boolean,number,string,symbol. 基本类型的值是保存在栈内存中的简单数据段 基础类型特性 基础类型最重要的特性 基础类型是不变的 因此:基础类型没有splice,sort之类的直接改变变量的方法 强行改变基础类型会报错 // str 不能调用 Array的 sort 和 splice Array.prototype.sort.call('strxyz'); // Uncaught TypeE

JavaScript基础 空字符串转为数值类型 Number()

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

玩转JavaScript OOP[0]&mdash;&mdash;基础类型

前言 long long ago,大家普遍地认为JavaScript就是做一些网页特效的.处理一些事件的.我身边有一些老顽固的.NET程序员仍然停留在这种认知上,他们觉得没有后端开发肯定是构建不了系统的. 编程语言和技术的结合使用,就像一个男人娶了好几个妞一样.在旧的时代,.NET是大房,JavaScript是偏房.大房是"后宫之主",不仅要操持家业,还能给你生娃,娃将来也要继承家业的.偏房就没那么幸运了,在"后宫"没什么地位,虽然衣食无忧,但不能管理家族事务,生的

Asp.net 面向接口可扩展框架之类型转化基础服务

新框架正在逐步完善,可喜可贺的是基础服务部分初具备模样了,给大家分享一下 由于基础服务涉及太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 说到类型转化必须要清楚.net的类型,类型都不清楚何来类型转化 1.Primitive类型 1.1 这个概念估计很多人都没听说过,Primitive不是一个新类型,而是.net类型中最基本的一种分类,是基元类型的意思       MS将类型分为三类:Primitive(基元类型).Complex(复

【Go入门教程2】内置基础类型(Boolean、数值、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值

这小节我们将要介绍如何定义变量.常量.Go内置类型以及Go程序设计中的一些技巧. 定义变量 Go语言里面定义变量有多种方式. 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面: // 定义一个名称为“variableName”,类型为"type"的变量 var variableName type 定义多个变量 // 定义三个类型都是“type”的变量 var vname1, vname2, vname3 type 定义变量并初始化值 // 初始化

Dart入门—基础类型与正则

基础数据类型与正则 数字与布尔值 数字类型与布尔类型与其他语言是一样一样的 部分属性 int figureA = -93; // figureA是否为负数 print(figureA.isNegative); // figureA是否是有限的 print(figureA.isFinite); // figureA是否正无穷大或负无穷大 print(figureA.isInfinite); double figureB = 64.742; // 返回figureB的符号,-1.0:值小于0.+1.

自学HIBERNATE5.0文档第一季之基础类型篇

2.3. Basic Types Basic value types usually map a single database column, to a single, non-aggregated Java type. Hibernate provides a number of built-in basic types, which follow the natural mappings recommended by the JDBC specifications. Internally

Scala学习 - 基础类型

Scala中的类型相对于Java来说,与.net的想法更为接近,所有的类型都是基于一个基础类型,包括值类型也是继承自该类型: Java中值类型是语言直接提供的,这点上有点不同: 类型关系图如下: 其中所有类型的基类与Any Any之后分为两个AnyVal与AnyRef 其中AnyVal是所有值类型的父类型 AnyRef是所有引用类型的父类型 与其他语言稍微有点不同的是,Scala还定义了底类型 其中Null类型是所有引用类型的底类型,及所有AnyRef的类型的空值都是Null 而Nothing是

js笔试题系列之——基础类型与运算符

前端技术的发展速度大家有目共睹,js的ECMA标准也不再是3的天下,但不管再怎么山雨欲来风满楼,基础语法还是得温故而知新.无论你是初学则还是多年js的编程者,都可以试着做做下面的测试题,我相信总还是会有些收获的.因为全部是自己总结和手打的,有纰漏错误之处请留言,谢谢. 一:考察基本数据类型与运算符 (1) var a; console.log(typeof a); ==>undefined 先以一个最常见也是最简单的测试案例开始,未定义的变量或者未赋值则为undefined (2) var a