.NET用反射给实体赋值

在系统开发过程中,有一些代码是必须反复写的.比如实体的赋值过程(不用实体的免看)

Eg: XXX.xxx=XXX

虽然可以通过codesmith来生成赋值,但是免不了代码冗长.如果是根据数据库生成的话,我们还要删除非必要的属性.而且过分依赖数据库.

特别是当你需要不同实体之间进行相同属性拷贝时,你必须一个属性一个属性赋值.实在太烦了.

我在做个java项目时无意发现了一个PropertyUtils类.就是用来属性复制的类,探究原理之后.发现其实.net里也是同样可以实现的.

.NET的反射就是实现的办法. using System.Reflection;

 1         /// <summary>
 2         /// 对象属性拷贝(全匹配拷贝)
 3         /// </summary>
 4         /// <param name="sourceObj">源对象</param>
 5         /// <param name="targetObj">目标对象</param>
 6         /// <returns>目标对象</returns>
 7         public static object propertyCopy(object sourceObj, object targetObj)
 8         {
 9             Type sourceType = sourceObj.GetType();
10             Type targetType = targetObj.GetType();
11 
12             PropertyInfo[] proInfo = sourceType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
13 
14             if (null != proInfo)
15             {
16                 foreach (PropertyInfo item in proInfo)
17                 {
18                     string propertyName = item.Name;
19                     PropertyInfo pit = targetType.GetProperty(propertyName);
20                     if (pit != null)
21                     {
22                         pit.SetValue(targetObj, item.GetValue(sourceObj, null), null);
23                     }
24                 }
25             }
26 
27             return targetObj;
28         }

 

转载于:https://www.cnblogs.com/a-dou/articles/5725902.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值