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

来源:互联网 发布:手机淘宝页面怎么刷新 编辑:程序博客网 时间:2024/05/16 05:07

代码如下:

 1         /// <summary>
 2         /// 设置相应属性的值
 3         /// </summary>
 4         /// <param name="entity">实体</param>
 5         /// <param name="fieldName">属性名</param>
 6         /// <param name="fieldValue">属性值</param>
 7         public static void 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, 0null);
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, nullnull);
60 
61             }
62 
63         }
64         /// <summary>
65         /// 类型匹配
66         /// </summary>
67         /// <param name="type"></param>
68         /// <param name="typeName"></param>
69         /// <returns></returns>
70         public static bool IsType(Type type, string typeName)
71         {
72             if (type.ToString() == typeName)
73                 return true;
74             if (type.ToString() == "System.Object")
75                 return false;
76 
77             return IsType(type.BaseType, typeName);
78         }

原创粉丝点击