• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[转]c#中如何利用反射设置属性值

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文转自:http://blog.csdn.net/donetren/article/details/5270594

///<summary>
2         /// 设置相应属性的值
3         ///</summary>
4         ///<param name="entity">实体</param>
5         ///<param name="fieldName">属性名</param>
6         ///<param name="fieldValue">属性值</param>
7         publicstaticvoid SetValue(object entity, string fieldName, string fieldValue)
8         {
9             Type entityType = entity.GetType();
10
11             PropertyInfo propertyInfo = entityType.GetProperty(fieldName);
12
13             if (IsType(propertyInfo.PropertyType, "System.String"))
14             {
15                 propertyInfo.SetValue(entity, fieldValue, null);
16
17             }
18
19             if (IsType(propertyInfo.PropertyType, "System.Boolean"))
20             {
21                 propertyInfo.SetValue(entity, Boolean.Parse(fieldValue), null);
22
23             }
24
25             if (IsType(propertyInfo.PropertyType, "System.Int32"))
26             {
27                 if (fieldValue !="")
28                     propertyInfo.SetValue(entity, int.Parse(fieldValue), null);
29                 else
30                     propertyInfo.SetValue(entity, 0, null);
31
32             }
33
34             if (IsType(propertyInfo.PropertyType, "System.Decimal"))
35             {
36                 if (fieldValue !="")
37                     propertyInfo.SetValue(entity, Decimal.Parse(fieldValue), null);
38                 else
39                     propertyInfo.SetValue(entity, new Decimal(0), null);
40
41             }
42
43             if (IsType(propertyInfo.PropertyType, "System.Nullable`1[System.DateTime]"))
44             {
45                 if (fieldValue !="")
46                 {
47                     try
48                     {
49                         propertyInfo.SetValue(
50                             entity,
51                             (DateTime?)DateTime.ParseExact(fieldValue, "yyyy-MM-dd HH:mm:ss", null), null);
52                     }
53                     catch
54                     {
55                         propertyInfo.SetValue(entity, (DateTime?)DateTime.ParseExact(fieldValue, "yyyy-MM-dd", null), null);
56                     }
57                 }
58                 else
59                     propertyInfo.SetValue(entity, null, null);
60
61             }
62
63         }
64         ///<summary>
65         /// 类型匹配
66         ///</summary>
67         ///<param name="type"></param>
68         ///<param name="typeName"></param>
69         ///<returns></returns>
70         publicstaticbool IsType(Type type, string typeName)
71         {
72             if (type.ToString() == typeName)
73                 returntrue;
74             if (type.ToString() =="System.Object")
75                 returnfalse;
76
77             return IsType(type.BaseType, typeName);
78         }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
鸡兔同笼问题C/C++发布时间:2022-07-18
下一篇:
使用C#实现WinForm窗体的动画效果发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap