C#对象深拷贝方法
来源:互联网 发布:adc0808与单片机连接 编辑:程序博客网 时间:2024/05/16 12:58
对象的拷贝是编程中常用到的,下面提供一个对象深拷贝的方法,挺不错的
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; }
- C#对象深拷贝方法
- C#对象深拷贝方法 - 通用版
- C#对象深拷贝
- C# 对象深拷贝
- C#中深拷贝对象的简单方法
- c# 对象深拷贝,浅铐贝,直接拷贝
- C# 对象深拷贝、浅铐贝、直接拷贝
- C# 对象深拷贝、浅铐贝、直接拷贝
- C#对象的浅拷贝,深拷贝
- C#对象的浅拷贝,深拷贝
- C#的对象深拷贝
- c#的对象的深拷贝和浅拷贝
- C#对象的浅拷贝、序列化深拷贝
- C# 对象间的 深拷贝 实现
- C# 对象的拷贝
- C# 对象的拷贝
- c#对象拷贝
- java 对象深拷贝通用方法
- 软件测试工具之测试用例管理工具比较
- 3.Ubuntu下交叉环境搭建(安装arm-linux-gcc)
- Json Eval 解析
- Apache禁止目录访问方法介绍
- 4Ubuntu下交叉环境搭建(设置Samba与Windows系统进行文件传输)
- C#对象深拷贝方法
- python perl脚本经过cvs提交后无法直接执行解决
- 使用 TestLink 进行测试管理
- 在怀疑的时代依然需要信仰
- 5.Ubuntu下交叉环境搭建(NFS设置)
- UML中的联系、聚合与组合的区别
- java.util.Map使用心得
- 云存储服务的可用性——从又拍网看云存储服务
- 苹果公司联系邮箱大全