C#通用类型转换方法

转载 2016年05月30日 21:05:43
static public object ChangeType(object value, Type type)
        {
            if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
            if (value == null) return null;
            if (type == value.GetType()) return value;
            if (type.IsEnum)
            {
                if (value is string)
                    return Enum.Parse(type, value as string);
                else
                    return Enum.ToObject(type, value);
            }
            if (!type.IsInterface && type.IsGenericType)
            {
                Type innerType = type.GetGenericArguments()[0];
                object innerValue = ChangeType(value, innerType);
                return Activator.CreateInstance(type, new object[] { innerValue });
            }
            if (value is string && type == typeof(Guid)) return new Guid(value as string);
            if (value is string && type == typeof(Version)) return new Version(value as string);
            if (!(value is IConvertible)) return value;
            return Convert.ChangeType(value, type);
        }


        

今天在使用PetaPoco处理Nullable的时候出现了一个类型转化的问题,虽然最后发现是数据库类型错误,但在搜索过程中找到了这个通用的类型转换方法,觉得不错,留下来,也希望对更多的朋友提供帮助!

原文链接:http://www.cnblogs.com/genson/archive/2008/10/08/1306099.html


对一个C#通用类型转换器的改进

using System; using System.Collections.Generic; using System.Text; namespace LoadXml {     ...
  • weekeew
  • weekeew
  • 2017年03月20日 09:35
  • 448

通用类型转换方法

        #region 类型 之间的转换 (string To Int,Datetime To String,String To Datetime)        ///         //...
  • codeofsea
  • codeofsea
  • 2007年05月08日 10:23
  • 457

C#通用类型转换器

C#通用类型转换器引子    在最近做的一个项目中,因为要在设计时和运行时都需要通过PropertyGrid对一些自定义类型的属性进行编辑,比如弹出窗体式编辑、下拉框式的编辑还有属性展开编辑等各种方式...
  • zztfj
  • zztfj
  • 2009年04月18日 15:47
  • 7323

C#——类型转换

类型转换 一、c#类型转换可以分为两大类:一类是同一类型转换(Cast),另一类是不同类型转换(Convert)。    (一)同一类型转换(Cast)可分为两种:       (1)...
  • haiyan_cf
  • haiyan_cf
  • 2012年03月11日 18:39
  • 2105

【C#】基础知识—数据类型、数据类型转换

一、 数据类型 C#中的数据类型根据定义可以分为两种:一种是值类型,一种是引用类型。这两种类型的差异就在于数据的存储方式,值类型直接存储数据,而引用类型则存储实际数据的引用,程序通过此引用找到真正的数...
  • haojie2014
  • haojie2014
  • 2016年03月02日 20:35
  • 626

CSharp变量和数据类型的转换

分类     值类型 什么样的变量是值类型呢?看值类型的特点吧 1.值类型变量都存储在堆栈中。2.访问值类型变量时,一般都是直接访问其实例。 3.每个值类型变量都有自己的数据副本,因此对一...
  • wxlinsr
  • wxlinsr
  • 2014年05月22日 12:09
  • 3436

C#类型转换总结

C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 Unicode 码、数值字符串和数值之...
  • azhexg
  • azhexg
  • 2010年10月07日 17:33
  • 27060

C# 将一个对象转换为指定类型

原文地址:点击打开链接适用:普通的对象,并且有默认的无参数构造函数 #region 将一个对象转换为指定类型 /// /// 将一个对象转换为指定类型 ...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015年09月08日 19:13
  • 2630

C# 中的类型转换

 1. 装箱、拆箱还是别名许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程。许多其它变量类型也是如此,如:short Int16,long Int...
  • luyifeiniu
  • luyifeiniu
  • 2006年08月02日 17:11
  • 3012

C#通用类型转换方法

static public object ChangeType(object value, Type type) { if (value == null && ...
  • qjwqjwqjw3
  • qjwqjwqjw3
  • 2016年05月30日 21:05
  • 406
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#通用类型转换方法
举报原因:
原因补充:

(最多只允许输入30个字)