在系统开发过程中,有一些代码是必须反复写的.比如实体的赋值过程(不用实体的免看)
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 }