修改为根据特性赋值,好处是数据库字段变化了,无需修改实体类属性,修改实体类属性很可能造成不必要的麻烦,所以改为用特性,特性的好处是数据库字段变化了只需要修改特性则可,不需要更改实体类属性

class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            DataColumn dcName = new DataColumn("Name", typeof(string));
            dt.Columns.Add(dcName);
            DataRow row = dt.NewRow();
            row["Name"] = "小强";
            dt.Rows.Add(row);

Student s = new Student();
            DataBind(s, dt.Rows[0]);
            Console.WriteLine(s.StudentName);
        }
        static void DataBind(object entity, DataRow row)
        {
            Type type = entity.GetType();
            PropertyInfo[] infors = type.GetProperties();
            for (int i = 0; i < infors.Length; i++)
            {
                object[] attributes = infors[i].GetCustomAttributes(typeof(MyAttribute), false);
                if (attributes.Length > 0)
                {
                    MyAttribute attribute = attributes[0] as MyAttribute;
                    if (row.Table.Columns.Contains(attribute.Name))
                    {
                        object value = Convert.ChangeType(row[attribute.Name], infors[i].PropertyType);
                        infors[i].SetValue(entity, value, null);
                    }
                }
            }
        }

}
    public class Student
    {
        [My("Name")]
        public string StudentName { get; set; }
    }
    [AttributeUsage(AttributeTargets.Property)]
    public class MyAttribute : Attribute
    {
        public string Name { get; set; }
        public MyAttribute(string name)
        {
            this.Name = name;
        }
    }

转载于:https://www.cnblogs.com/jansonblog/archive/2012/01/12/2320927.html

【转】反射,DataRow转换为实体类(优化)相关推荐

  1. javabean反射改字段内容_java反射机制给实体类相同字段自动赋值实例

    一.封装一个工具类 1.简易版 package net.aexit.construct.acceptance.websky.utils; import java.lang.reflect.Field; ...

  2. Datatable转为ListT / DataRow转为实体类对象

    using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...

  3. 【Json转换为实体类】

    在Java日常开发测试过程中可能用到需要将json格式数据转换为实体类,如果json的内容很复杂,层次结构多,手动编写成是实体类有些麻烦,IDE有插件能帮助我们: 需要安装如下两个插件 GsonFor ...

  4. 无法将linkedHashMap转换为实体类和feign.FeignException$NotFound错误

    在用OpenFeign对其他服务进行调用时,其报错信息如下所示: 问题一 feign.FeignException$NotFound: status 404 reading IRegulation#q ...

  5. poi读取excel 转换实体_java解析excel数据,将excel数据转换为实体类,存入数据库...

    前一段时间写了一个功能,从数据库中抽取出来的字段,写入到excel文件里:java使用poi把从数据库中取出的数据写入excel 最近实现了一个相反的功能,前台传一个excel文件,在后台解析该exc ...

  6. java解析excel存入map,java解析excel数据,将excel数据转换为实体类,存入数据库

    前一段时间写了一个功能,从数据库中抽取出来的字段,写入到excel文件里:java使用poi把从数据库中取出的数据写入excel 最近实现了一个相反的功能,前台传一个excel文件,在后台解析该exc ...

  7. java日期用什么属性_java日期以及使用Java反射机制遍历实体类的属性和类型

    fmt:formatDate 的输出格式 fmt关于时间格式的输出 2004-5-31 23:59:59 2004-4-1 23:59:59 JSTL标签fmt:formatDate引起的中文乱码问题 ...

  8. java.lang.Long cannot be cast to 转换为实体类有问题 entity.Employee

    在拦截器里出现了问题

  9. C#中怎样连接数据库并将查询结果转为实体类以及如何加入事务

    场景 新建一个程序,需要对数据的表进行查询并将查询结果转换为实体类,然后将多个实体类 再插入到另一个数据库的表中,执行插入的过程中要使用事务. 注: 博客主页: https://blog.csdn.n ...

最新文章

  1. 火狐推荐几个实用的插件
  2. 类似QQ管家页面jquery图片显隐轮换效果
  3. 伯努利分布方差_统计知识(4)——分布
  4. java--自动装箱,拆箱
  5. java实现数组排序代码_Java使用选择排序法对数组排序实现代码
  6. java colormodel_ColorModel
  7. office 365将英文改为中文
  8. 每日一道剑指offer-两个栈来实现一个队列
  9. x86 vt-d在linux中的应用
  10. 几款pdf转换成word转换器免费版软件
  11. 《构建之法》CH5~6读书笔记 PB16110698 第九周(~5.15)
  12. 2021-1-30最短路入门
  13. PPT——————酷炫文字、人物海报
  14. 【Python】欧氏距离和余弦距离
  15. 考研热催生百亿市场,行业老兵文都教育的“冷思考” ——和大学生交朋友
  16. 百分点科技助力中国环境监测总站用数据底座赋能智慧监测
  17. 3.10矩阵与线性代数运算
  18. 蓝牙设备名字和地址ID如何设置
  19. 筛查肌肉病变,首选磁共振
  20. 顺丰打印电子运单报500问题解决

热门文章

  1. opencv 轮廓检测
  2. VMware 虚拟化平台规划设计方案
  3. Nginx学习总结(9)——前端跨域问题解决
  4. maven项目jsp无法识别jstl的解决办法
  5. 震后十年,他重走那条生死送货线
  6. 2754. [SCOI2012]喵星球上的点名【后缀数组】
  7. SQL Server 2008等登录用户只能看到自己的数据库设置办法
  8. Linux命令之查看文件内容
  9. 常用的几个提高iOS开发效率的开源类库及工具
  10. RhinoMock异常ExpectationViolationException以及解决