发布时间: 2012-07-29 15:26:13 作者: rapoo
C#对象深拷贝方法
对象的拷贝是编程中常用到的,下面提供一个对象深拷贝的方法,挺不错的
public object Copy(this object obj) { Object targetDeepCopyObj; Type targetType = obj.GetType(); //值类型 if (targetType.IsValueType == true) { targetDeepCopyObj = obj; } //引用类型 else { targetDeepCopyObj = System.Activator.CreateInstance(targetType); //创建引用对象 System.Reflection.MemberInfo[] memberCollection = obj.GetType().GetMembers(); foreach (System.Reflection.MemberInfo member in memberCollection) { if (member.MemberType == System.Reflection.MemberTypes.Field) { System.Reflection.FieldInfo field = (System.Reflection.FieldInfo)member; Object fieldValue = field.GetValue(obj); if (fieldValue is ICloneable) { field.SetValue(targetDeepCopyObj, (fieldValue as ICloneable).Clone()); } else { field.SetValue(targetDeepCopyObj, Copy(fieldValue)); } } else if (member.MemberType == System.Reflection.MemberTypes.Property) { System.Reflection.PropertyInfo myProperty = (System.Reflection.PropertyInfo)member; MethodInfo info = myProperty.GetSetMethod(false); if (info != null) { object propertyValue = myProperty.GetValue(obj, null); if (propertyValue is ICloneable) { myProperty.SetValue(targetDeepCopyObj, (propertyValue as ICloneable).Clone(), null); } else { myProperty.SetValue(targetDeepCopyObj, Copy(propertyValue), null); } } } } } return targetDeepCopyObj; }
一个基于asp和C#的网站已经上线为
C# 频繁向Excel表格中累加数据
C#下这种效果的注释应该如何实现
有图片做一个N皇后有关问题的网页
【叫小弟我猫爷_】Linq多字段分组.
求免费图表控件解决思路
vs2012上轮换空行的正则表达式
C# 继承WinForm 窗体控件属性不可修
COM组件是什么解决办法
怎么取出数据库某int类型的列全部之和