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#通用类型转换器

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

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

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

C#数据类型转换方法

隐式转换: 不需要做任何工作,也不需要编写代码。 例: var1=var2; 类型 可以显隐示转换为 byte  short,ushort,int,uint,lo...
  • tfy1028
  • tfy1028
  • 2013年03月13日 14:49
  • 10230

C#引用C++ Dll 所有类型转换方法

//C++中的DLL函數原型為 //extern "C" __declspec(dllexport) bool 方法名一(const char* 變量名1, unsigned char...

C#调用VC DLL接口函数参数类型转换方法介绍

本文列出了C#调用VC DLL接口函数参数类型转换的方法,供大家参考。AD: handle---------IntPtrhwnd-----------IntPtrchar *----------str...

总结c/c++中各种基本数据类型转换方法

编程实例: #include #include #include #include #include using namespace std; //convert by template ...

Javaweb中封装servlet对post参数的各种类型转换方法

更多技术文章请访问我的个人博客在Javaweb中表单中的参数在提交给servlet时都是以字符串的类型出现,需要对各种参数进行类型的转换,而如果每次都写一遍类型转换方法,代码的实用性太低(其实是懒得写...

常用js类型转换方法浅析

1、其他类型转为 number:1、parseFloat parseFloat:接受一个参数,将字符串转换为数字类型,如果是引用类型(null除外),会先进行toString(),然后对返回字符串...

SQL Server数据类型转换方法

在SQL Server日常的函数、存储过程和SQL语句中,经常会用到不同数据类型的转换。在SQL Server有两种数据转换类型:一种是显性数据转换;另一种是隐性数据转换。下面分别对这两种数据类型转换...

常用类型转换方法工具类

功能:十六进制字符串与字节数组互转、字符转字节、Blob类型转字节数组、阿拉伯数字转中文小写 1 import java.io.BufferedInputStream; 2 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#通用类型转换方法
举报原因:
原因补充:

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