转: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. Unity3D研究院之IOS全自动打包生成ipa

    接着上一篇文章, 自动生成framework,这篇文章我把shell自动化打包ipa整理了一下,希望大家喜欢,嘿嘿.. 建议大家先看一下上一篇文章.http://www.xuanyusong.com/ ...

  2. 使用mysql触发器脚本,解决流水数据的添加。

    1.建立表脚本 CREATE DATABASE `spring` DEFAULT CHARACTER SET utf8; USE `spring`; CREATE TABLE `account` ( ...

  3. ifram一些常用的知识点

    本文摘自:http://www.cnblogs.com/duankaige/archive/2012/09/20/2695012.html   iframe的调用包括以下几个方面:(调用包含html ...

  4. orale内置函数COALESCE和GREATEST和LEAST

    1. COALESCE 返回该表达式列表的第一个非空value. 格式: COALESCE(value1, value2, value3, ...) 含义: 返回value列表第一个非空的值. val ...

  5. SNAT

    http://blog.chinaunix.net/uid-2628744-id-2454879.html

  6. spring autoWire注解

    1.autowire注解,可以用来获得applicationContext,ResourceLoader,BeanFactory的注入 autoWire会获得相应资源 2.autoWire注解还可以用 ...

  7. QC、IQC、IPQC、FQC、OQC

    品质政策为:全面品管.贯彻制度.提供客户需求的品质:全员参与.及时处理.以达成零缺点的目标. 品质三不政策为:不接受不良品.不制造不良品.不流出不良品. QC即英文QUALITY CONTROL的简称 ...

  8. Delphi语言获得生命的原因和过程

    都说Anders Hejlsberg是Delphi语言的作者,前一阵仔细读了VCL源码,惊叹于它的巧夺天工,未免对编译器的作者有些不服气,觉得首功不是他.今天仔细想了想,还是觉得不服不行.以下是我的理 ...

  9. java获取当前操作系统的信息

    java获取当前操作系统的信息 JavaOS虚拟机UnixEXT  从网上收集的一些关于java获取操作系统信息的方法,现在总结一下: 1获取本机的IP地址: private static Strin ...

  10. spring 定时任务的 执行时间设置规则(转)

     spring 定时任务的 执行时间设置规则 单纯针对时间的设置规则org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运 ...