zoukankan      html  css  js  c++  java
  • 通过反射自动填充实体

    之前在完成自己的小型框架时,为了动态去填充实体,于是想到了以下方法,直接通过反射可自动对实体进行填充,这样就不需要每个实体属性去赋值这么麻烦了:

     1         /// <summary>
     2         /// 填充实体内容
     3          /// </summary>
     4         /// <param name="targetObj">实体对象</param>
     5         /// <param name="dr">DbDataReader对象</param>
     6         protected void FillDS(object targetObj, DbDataReader reader)
     7         {
     8             try
     9             {
    10                 //实现首字母大写,规范所有属性名称
    11                 System.Globalization.CultureInfo cult = System.Threading.Thread.CurrentThread.CurrentCulture;
    12                 System.Globalization.TextInfo textInfo = cult.TextInfo;
    13                 string name = string.Empty;
    14 
    15                 for (int i = 0; i < reader.FieldCount; i++)
    16                 {
    17                     //使用首字母大写转换,规范属性名以进行匹配
    18                     name = textInfo.ToTitleCase(reader.GetName(i).ToLower());
    19                     //根据属性名反射获取属性
    20                     PropertyInfo propertyInfo = targetObj.GetType().GetProperty(name);
    21                     if (propertyInfo != null)
    22                     {
    23                         //如果值不为空以及属性为可写,则进行写入操作
    24                         if (reader.GetValue(i) != DBNull.Value && propertyInfo.CanWrite)
    25                         {
    26                             //为属性设置值
    27                             propertyInfo.SetValue(targetObj, reader.GetValue(i), null);
    28                         }
    29                     }
    30                 }
    31             }
    32         }
  • 相关阅读:
    P2024 [NOI2001]食物链[扩展域并查集]
    poj1733 Parity game[带权并查集or扩展域]
    BZOJ1079 [SCOI2008]着色方案[组合计数DP]
    P1801 黑匣子[对顶堆]
    poj3784 Running Median[对顶堆]
    P1196 [NOI2002]银河英雄传说[带权并查集]
    poj1456 Supermarket[另类的并查集做法]
    P1955 [NOI2015]程序自动分析[离散化+并查集]
    BZOJ1306 [CQOI2009]match循环赛/BZOJ3139 [Hnoi2013]比赛[dfs剪枝+细节题]
    android的模拟器-Genymotion
  • 原文地址:https://www.cnblogs.com/winsonet/p/1430142.html
Copyright © 2011-2022 走看看