1. /// <summary>
  2. /// 为指定对象分配参数
  3. /// </summary>
  4. /// <typeparam name="T">对象类型</typeparam>
  5. /// <param name="dic">字段/值</param>
  6. /// <returns></returns>
  7. public static T Assign<T>(Dictionary<string, string> dic) where T : new()
  8. {
  9. Type myType = typeof(T);
  10. T entity = new T();
  11. var fields = myType.GetProperties();
  12. string val = string.Empty;
  13. object obj = null;
  14.  
  15. foreach (var field in fields)
  16. {
  17. if (!dic.Keys.Contains(field.Name))
  18. continue;
  19. val = dic[field.Name];
  20.  
  21. object defaultVal;
  22. if (field.PropertyType.Name.Equals("String"))
  23. defaultVal = "";
  24. else if (field.PropertyType.Name.Equals("Boolean"))
  25. {
  26. defaultVal = false;
  27. val = (val.Equals("") || val.Equals("on")).ToString();
  28. }
  29. else if (field.PropertyType.Name.Equals("Decimal"))
  30. defaultVal = 0M;
  31. else
  32. defaultVal = ;
  33.  
  34. if (!field.PropertyType.IsGenericType)
  35. obj = string.IsNullOrEmpty(val) ? defaultVal : Convert.ChangeType(val, field.PropertyType);
  36. else
  37. {
  38. Type genericTypeDefinition = field.PropertyType.GetGenericTypeDefinition();
  39. if (genericTypeDefinition == typeof(Nullable<>))
  40. obj = string.IsNullOrEmpty(val) ? defaultVal : Convert.ChangeType(val, Nullable.GetUnderlyingType(field.PropertyType));
  41. }
  42.  
  43. field.SetValue(entity, obj, null);
  44. }
  45.  
  46. return entity;
  47. }

C# 利用反射动态将字符串转换成属性对应的类型值的更多相关文章

  1. C# 如何利用反射,将字符串转化为类名并调用类中方法

    首先,先随便创建一个测试类 <span style="font-family:Microsoft YaHei;font-size:18px;">public class ...

  2. 利用反射把数据集合转换成List

    ---ResultSet数据集 public static List toList(ResultSet rs, Class cls) { List list = new ArrayList(); tr ...

  3. 05 HTML字符串转换成jQuery对象、绑定数据到元素上

    1 要求 将一段 HTML脚本 封装成一个字符串,将这个字符串转换成一个jQuery对象:然后将这个jQuery对象添加到指定的元素中去 2 步骤 定义字符串 var str = '<div i ...

  4. JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的

    JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的

  5. c# 利用反射 从json字符串 动态创建类的实例 并动态为实例成员赋值

    转自 http://hi.baidu.com/wjinbd/item/c54d43d998beb33be3108fdd 1 创建自己要用的类 class stu { string _name; int ...

  6. 用jquery解析JSON数据的方法以及字符串转换成json的3种方法

    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...

  7. C# 利用反射动态创建对象[摘录]

    摘自:http://hi.baidu.com/yangyuhang/blog/item/f12ea90e13f214e336d12250.html 在VS.Net中,有很多种方法动态调用对象的构造函数 ...

  8. Gson将字符串转换成JsonObject和JsonArray

    以下均利用Gson来处理: 1.将bean转换成Json字符串: public static String beanToJSONString(Object bean) { return new Gso ...

  9. js 字符串转换成数字的三种方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...

随机推荐

  1. 省级联动(使用ajax实现)

    在博客园学习了很多实用的东西,现在该慢慢开始自己写写博客文章, 由于本人水平有限,刚走出校园的小菜鸟,另外,文章在表述和代码方面如有不妥之处,欢迎批评指正.留下你 的脚印,欢迎评论! 有什么问题,可以 ...

  2. xsd.exe的使用

    xsd.exe的使用 XML文件生成XSD文件 xsd myFile.xml   /outputdir:myOutputDir XSD文件生存实体类 xsd <你的XSD路径>.xsd / ...

  3. 初试MarkDown

    · 要写个文档,突然就想到要不要试试学学MarkDown,整理一下大致过程 · 首先搜到这篇文章 ,简单介绍了MarkDown,以及OS X 平台上一个简单的工具 mou (目前仍免费) 相关新闻不做 ...

  4. Windows 2008 R2 Powershell 3.0

    下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=34595&WT.mc_id=rss_alldownloads_all

  5. JavaScript中的函数表达式

    在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构造器创建的函数. 本文中主要看看函数表达式及其相关的知识点. 函数表达式 首先,看看函数表达式的表 ...

  6. Golang tips

    1.go test 测试单个函数 go test -v -test.run Test* 2.

  7. CF149D. Coloring Brackets[区间DP !]

    题意:给括号匹配涂色,红色蓝色或不涂,要求见原题,求方案数 区间DP 用栈先处理匹配 f[i][j][0/1/2][0/1/2]表示i到ji涂色和j涂色的方案数 l和r匹配的话,转移到(l+1,r-1 ...

  8. U3D中GameObject.Find无法找到元件

    U3D中GameObject.Find 如果某元件SetActive(false)了,Find()无法找到 因为Find()只会帮你找出正在活动中的物件,所以在将物件关闭前,我们必须将此物件放至预先定 ...

  9. oracl中的集合操作符

    1:union(并集)     union连接两条sql语句,并且去除两条sql语句重复的记录 2.union all(并集) 接两句sql语句,两句sql语句的和不用去掉重复的记录. 3:inter ...

  10. LinkedList子类与Queue接口

    LinkedList表示的是一个链表的操作类.定义如下: public class LinkedList<E> extends AbstractSequentialList<E> ...