c# 利用反射动态给实体类对象赋值
转: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# 利用反射动态给实体类对象赋值的更多相关文章
- Android利用反射机制为实体类属性赋值
		
在做android项目时,有时会遇到从网络上获取json类型数据,赋值给实体类,实体类属性少可以一个一个的赋值,如果实体类有很多属性,赋值可能就要耗很长的功夫了,幸好Java给我们提供了反射机制.下面 ...
 - java利用反射动态获取实体类的属性值
		
直接贴代码吧,有需要的话,可以根据自己的需要修改部分代码: public BigDecimal getByAttributeName(ThmdGwqriR thmdGwqriR, String att ...
 - 利用MAP动态创建C++类对象
		
MFC的CRuntimeClass利用链表实现了C++类的动态创建.但是如果项目中对动态创建的要求比较低,我们完全可以利用map实现简单的动态创建. http://blog.csdn.net/yeji ...
 - .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表
		
/// <summary> /// 解析xml字符串 转换为实体类列表数据 /// </summary> /// <param name="xmlStr&quo ...
 - C#利用反射和泛型给不同对象赋值
		
/// <summary> /// 适用于初始化新实体 /// </summary> static public T RotationMapping<T, S>(S ...
 - 利用Java反射机制对实体类的常用操作工具类ObjectUtil
		
代码: ObjectUtil类: import java.lang.reflect.Field; import java.math.BigDecimal; import java.text.Simpl ...
 - 利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理
		
利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理 2018-3-10 15:18 | 发布:Admin | 分类:代码库 | 评论: ...
 - C# 利用反射动态创建对象——带参数的构造函数和String类型
		
C# 利用反射动态创建对象——带参数的构造函数和String类型 最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好, ...
 - C#利用反射动态创建对象 带参数的构造函数和String类型 (转载)
		
最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好,特别是当构造函数带参数的时候.MSDN上给出的例子十分复杂,网上的 ...
 
随机推荐
- soap消息机制 讲解
			
SOAP(Simple Object Access Protocol,简单对象访问协议)作为一种信息交互协议在分布式应用中非常广泛,如WebService.在使用.Net开发WebService时候, ...
 - 【转载】SSH整合使用步骤
			
SSH整合使用步骤 由于刚开始学习SSH,其中的配置比较多,为了下次能够快速的进行配置,将SSH整合的过程记录下来,以便下次查阅. 软件环境:MyEclipse 9.0.Struts2.2.Sprin ...
 - hdu1031 Design T-Shirt
			
http://acm.hdu.edu.cn/showproblem.php?pid=1031 #include<iostream> #include<stdio.h> #inc ...
 - lintcode 中等题:interleaving String 交叉字符串
			
题目 交叉字符串 给出三个字符串:s1.s2.s3,判断s3是否由s1和s2交叉构成. 样例 比如 s1 = "aabcc" s2 = "dbbca" - 当 ...
 - Project Euler 94:Almost equilateral triangles 几乎等边的三角形
			
Almost equilateral triangles It is easily proved that no equilateral triangle exists with integral l ...
 - kmalloc/kfree,vmalloc/vfree函数用法和区别
			
http://blog.csdn.net/tigerjibo/article/details/6412881 kmalloc/kfree,vmalloc/vfree函数用法和区别 1.kmalloc ...
 - Photoshop:制作金属质感-不锈钢纹理
			
效果图 过程: 1.滤镜->渲染->云彩 2.滤镜->模糊->高斯模糊 3.滤镜->杂色->添加杂色 ,数量10 4.滤镜->模糊->径向模糊 5.滤镜 ...
 - SVN 目录结构
			
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
 - Redhat 使用中文安装后更换为英文的设定
			
vi /etc/sysconfig/i18n将LANG改为LANG=en_US.UTF-8保存退出,重新reboot
 - office开发心得——基于模板开发
			
这几天正在写一个小程序,但用到生成word表格和Excel表格.到网上查了一些资料,发现如果生成表格模板相对比较固定即可把其制作成模板,需要设置什么格式可以直接在模板中设置,而程序仅需替换相应的内容即 ...