转:http://blog.sina.com.cn/s/blog_659a572b0100xp5s.html

例子如下





using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using MvcApplication2.Models;

using DataAccess;

using System.Configuration;

using System.Data;

using System.Data.SqlClient;

using System.Reflection;

namespace MvcApplication2.Controllers

{

   /// <summary>

    /// 将datatable装入指定类型的集合

    /// </summary>

    /// <typeparam name="T"></typeparam>

    public class GenericList<T>:List<T>

    {

        public GenericList(DataTable dt, string  f)

        {

            System.Type tt = System.Type.GetType(f);//获取指定名称的类型

            object ff = Activator.CreateInstance(tt, null);//创建指定类型实例

            PropertyInfo[] fields = ff.GetType().GetProperties();//获取指定对象的所有公共属性

            foreach (DataRow dr in dt.Rows)

            {

                object obj = Activator.CreateInstance(tt, null);

                foreach (DataColumn dc in dt.Columns)

                {

                    foreach (PropertyInfo t in fields)

                    {

                        if (dc.ColumnName == t.Name)

                        {

                            t.SetValue(obj, dr[dc.ColumnName], null);//给对象赋值

                            continue;

                        }

                    }



                }

                this.Add((T)obj);//将对象填充到list集合

            }

        }

    }





//////////////////////实体类



using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.ComponentModel;

using System.ComponentModel.DataAnnotations;

namespace MvcApplication2.Models

{

    [MetadataType(typeof(EmployeeData))]

    public partial  class Employee

    {



        public class EmployeeData

        {

            [DisplayName("用户ID")]

            public int ID { set; get; }



            [DisplayName("姓名")]

            [Required(ErrorMessage = "用户名不允许为空")]

            [StringLength(50, ErrorMessage = "用户名长度必须小于50个字符")]

            public string Uname { set; get; }



            [DisplayName("性别")]

            public bool Sex { set; get; }



            [DisplayName("出生日期")]

            [Required(ErrorMessage = "出生日期不允许为空")]

            public DateTime Birthday { set; get; }



            [DisplayName("是否婚配")]

            public bool IsHp { set; get; }



          

        }





    }

}





//////////////////调用



 GenericList<Employee> list1 = new GenericList<Employee>(dt, "MvcApplication2.Models.Employee");//调用

  return View(list1);

c# 利用反射动态给实体类对象赋值的更多相关文章

  1. Android利用反射机制为实体类属性赋值

    在做android项目时,有时会遇到从网络上获取json类型数据,赋值给实体类,实体类属性少可以一个一个的赋值,如果实体类有很多属性,赋值可能就要耗很长的功夫了,幸好Java给我们提供了反射机制.下面 ...

  2. java利用反射动态获取实体类的属性值

    直接贴代码吧,有需要的话,可以根据自己的需要修改部分代码: public BigDecimal getByAttributeName(ThmdGwqriR thmdGwqriR, String att ...

  3. 利用MAP动态创建C++类对象

    MFC的CRuntimeClass利用链表实现了C++类的动态创建.但是如果项目中对动态创建的要求比较低,我们完全可以利用map实现简单的动态创建. http://blog.csdn.net/yeji ...

  4. .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表

    /// <summary> /// 解析xml字符串 转换为实体类列表数据 /// </summary> /// <param name="xmlStr&quo ...

  5. C#利用反射和泛型给不同对象赋值

    /// <summary> /// 适用于初始化新实体 /// </summary> static public T RotationMapping<T, S>(S ...

  6. 利用Java反射机制对实体类的常用操作工具类ObjectUtil

    代码: ObjectUtil类: import java.lang.reflect.Field; import java.math.BigDecimal; import java.text.Simpl ...

  7. 利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理

    利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理   2018-3-10 15:18 | 发布:Admin | 分类:代码库 | 评论: ...

  8. C# 利用反射动态创建对象——带参数的构造函数和String类型

    C# 利用反射动态创建对象——带参数的构造函数和String类型 最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好, ...

  9. C#利用反射动态创建对象 带参数的构造函数和String类型 (转载)

    最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好,特别是当构造函数带参数的时候.MSDN上给出的例子十分复杂,网上的 ...

随机推荐

  1. tomcat 解析(三)-启动框架

    TOMCAT源码分析(启动框架)前言:   本文是我阅读了TOMCAT源码后的一些心得. 主要是讲解TOMCAT的系统框架, 以及启动流程.若有错漏之处,敬请批评指教!建议:   毕竟TOMCAT的框 ...

  2. httpClient 入门实例

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Unsu ...

  3. linux源代码阅读笔记 八进制

    c语言中,众所周知,以0x开头的数是16进制数.例如 0x8FFF 然而较少使用的是八进制数.它以0开头.例如 01234

  4. Palindrome Partitioning II

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...

  5. Linux如何修改文件/文件夹内所有文件的权限

    一.修改文件权限 修改文件权限前,需要了解一下权限中的”rwx”与数字的对应关系,其中r=4,w=2,x=1. 例如:”drwxr-xr-x”,第一个”d”是代表文件夹,这里不用考虑,后面九个字符,每 ...

  6. windows下eclipse远程连接hadoop错误“Exception in thread"main"java.io.IOException: Call to Master.Hadoop/172.20.145.22:9000 failed ”

    在VMware虚拟机下搭建了hadoop集群,ubuntu-12.04,一台master,三台slave.hadoop-0.20.2版本.在 master机器上利用eclipse-3.3连接hadoo ...

  7. TopCoder 603 div1 & div2

    div2 250pts MiddleCode 题意:s串长度为奇数时,将中间字符取掉并添加到t末尾:长度为偶数时,将中间两个较小的字符取掉并添加到末尾. 分析:直接做,学习了一下substr(s, p ...

  8. 【mysql的编程专题①】流程控制与其他语法

    流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中; 如果用在select上就会随着query出来的row来隐式迭代; 注释与语句结束符 语句结束符 默认有两 ...

  9. SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)

    转载:http://itindex.net/detail/50710-springaop-controller-service 从业近二,三年了,第一次写博客,平时做做脚手架或者架构一些基础框架然后给 ...

  10. [@Controller]3 详解@CookieValue,@PathVariable,@RequestBody,@RequestHeader,@RequestParam

    [@Controller]3 详解@CookieValue,@PathVariable,@RequestBody,@RequestHeader,@RequestParam 转载:http://blog ...