同类型对象利用反射自动赋值
来源:互联网 发布:java 多线程适用于什么 编辑:程序博客网 时间:2024/05/14 03:43
同一种类型的两个对象赋值,用反射。避免了一直点属性操作的麻烦.
下面是帮助类代码:
public class ObjectAssign { /// <summary> /// 对象赋值 /// </summary> /// <typeparam name="T"><peparam> /// <param name="left">被赋值对象(等号左边的)</param> /// <param name="right">赋值对象(等号右边的)</param> /// <param name="id">不修改的字段,eg:Test.Assignment<tb_goods_class>(tt, t, new string[]{"id","productName"});</param> public static void Assign<T>(T left, T right,string []attrs=null) { Type type = left.GetType(); List<PropertyInfo> pList = type.GetProperties().ToList(); for (int i = 0; i < pList.Count; i++) { //根据属性名获得指定的属性对象 PropertyInfo gc = type.GetProperty(pList[i].Name); //设置属性的值 if (attrs != null&&attrs.Length>0) { string attrName = pList[i].Name.ToLower(); if (!attrs.Contains(attrName)) { gc.SetValue(left, pList[i].GetValue(right, null), null); } } else { gc.SetValue(left, pList[i].GetValue(right, null), null); } } } }
下面是使用方式,大家可以打个断点看看结果:
private void btnStart_Click(object sender, EventArgs e) { Entity.Entities ee = new Entity.Entities(); tb_goods_class tt = ee.tb_goods_class.OrderByDescending(r => r.id).Take(1).FirstOrDefault(); tb_goods_class t = new tb_goods_class(); t.anotherName = DateTime.Now.ToString(); t.keywords = DateTime.Now.ToString(); t.id = 1; //"id", "keywords" 不需要被赋值 ObjectAssign.Assign<tb_goods_class>(tt, t, new string[] { "id", "keywords" }); //任何字段都要被赋值 ObjectAssign.Assign<tb_goods_class>(tt, t, new string[] { }); ObjectAssign.Assign<tb_goods_class>(tt, t, null); ObjectAssign.Assign<tb_goods_class>(tt, t); }
0 0
- 同类型对象利用反射自动赋值
- c++ 同类型对象赋值
- 利用反射实现JavaBean的自动赋值
- 利用反射实现实体类自动赋值
- 利用反射实现两个对象赋值
- 利用反射实现JavaBean的自动赋值(六)
- 利用反射给对象的属性赋值的例子
- c# 利用反射动态给实体类对象赋值
- c# 利用反射动态给实体类对象赋值
- [深入学习C#]利用反射给对象赋值
- 遍历 Map 对象, 利用反射为 Class 对象的对应的属性赋值.
- 利用java反射机制对比两对象同属性名的属性值
- 利用反射把DataTable自动赋值到Model实体(自动识别数据类型)
- c#两个对象,同属性赋值
- java利用POI和反射解析EXCEL实现对象属性动态赋值
- 利用反射给对象中的某个属性赋值或取值
- 利用反射机制来获取表单请求值以及对象赋值
- C# 反射给对象赋值遇到的问题——类型转换
- iOS开发中遇到的一些小问题
- 使用python显示图像在windows图片查看器中一直显示加载中就是打不开的解决途径
- linux scp远程拷贝文件及文件夹
- [cocos2dx笔记] 使用CCSpriteFrameCache
- 【入门】游戏运营不完全手册
- 同类型对象利用反射自动赋值
- 1065. A+B and C (64bit) (20)
- iOS familyNames
- 正则表达式
- 1_鸡兔同笼问题
- 一个解除TCP连接的TIME_WAIT状态限制的简便方法
- 【leetcode】Majority Element II,Majority element algorithm
- POJ 1564 Sum It Up -dfs(回溯法)
- c++类的前向声明