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


    本文转自: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         }

  • 相关阅读:
    数据库索引详解
    解决Eclipse中DDMS一直打印输出Connection attempts的问题
    发布一个关于SharePoint的管理小工具
    POJ 2895
    POJ 2909
    2020/6/9 [MRCTF2020]hello_world_go
    2020/5/31 [GKCTF2020]Chelly’s identity
    2020/5/30 [FlareOn6]Overlong
    2020/5/28 BUU_[WUSTCTF2020]level4
    2020/5/25 BUU_[WUSTCTF2020]level3
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3135097.html
Copyright © 2020-2023  润新知