c# 利用反射动态给实体类对象赋值
2012-06-06 10:10
441 查看
/// <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# 利用反射动态给实体类对象赋值
- c# 利用反射动态给实体类对象赋值
- c# 利用反射动态给实体类对象赋值
- c# 利用反射动态给实体类对象赋值
- C# 利用反射动态创建对象
- C# 利用反射动态创建对象[转]
- C#利用反射动态创建对象
- C# 利用反射动态创建对象[摘录]
- 利用c#反射实现实体类生成以及数据获取与赋值
- C# 利用反射动态创建对象
- C# 利用反射动态创建对象——带参数的构造函数和String类型
- 利用c#反射实现实体类生成以及数据获取与赋值
- C#回顾 - 8.利用反射动态创建对象
- [C#] 利用反射动态创建对象
- C# 利用反射动态创建对象——带参数的构造函数和String类型
- C#利用反射动态创建对象 带参数的构造函数和String类型
- C# 利用反射动态创建对象
- C# 静态工厂利用反射机制动态构建配置文件中 所配置的类的对象
- 【转】C# 利用反射动态创建对象
- C# 利用反射动态创建对象