转: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. xargs 加 gm批量转换图片

    %x50% @ ../-\ 南澳西涌_50%/@ 看了很多说明上都在用-i,这是一个已经废弃了的参数

  2. Memcache安全配置

    Memcache安全配置 瞌睡龙 · 2014/01/20 17:59 0x00 Memcache简介 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash ...

  3. C++ char*,const char*,string,int 的相互转换

    C++ char*,const char*,string,int 的相互转换   1. string转const char* string s ="abc";const char* ...

  4. c#操作剪切板

    C#定义了一个类System.Windows.Forms.Clipboard来简化剪切板操作,这个类有一个静态方法,主要有: Clear 清除剪切板中的所有数据: ContainsData,Conta ...

  5. 关于C#和ASP.NET中对App.config和Web.config文件里的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作

    最近我做的一些项目,经常需要用到对应用程序的配置文件操作,如app.config和web.config的配置文件,特别是对配置文件中的[appSettings]和[connectionStrings] ...

  6. JAVASCRIPT中的作用域和原型链,应该算是难点了,要好好多学学,练练

    今天初六,要上班啦... JAVASCRIPT,看来是丢不了了.. http://www.dengdeng90.com/wordpress/?p=241 http://www.cnblogs.com/ ...

  7. Nim语言:Pascal的语法,Python的缩进

    http://nim-lang.org/ 德国人Andreas Rumpf的作品,原因是他对过去使用的每种语言都不满意(Pascal也不满意?).以前叫Nimrod语言,从0.96版本开始改名为Nim ...

  8. WP之Sql Server CE数据库

    如何在WP8中进行数据存储,你首先想到应该是独立存储,但是独立存储似乎存储文件更方便,如果我们希望像处理对象的形式,该怎么办呢,答案就是Sql Server CE. Sql Server CE并不是新 ...

  9. Java API —— 异常

    1.异常:异常就是Java程序在运行过程中出现的错误. 2.异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象.其实就是Java对不正常情况进行描述后的对象 ...

  10. 简单的XPath入门

    XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.XPath 是 XML 的查询语 ...