C#对象深拷贝方法 - 通用版
来源:互联网 发布:注册域名能赚钱吗 编辑:程序博客网 时间:2024/06/04 03:48
- 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;
- }
0 0
- C#对象深拷贝方法 - 通用版
- C#对象深拷贝方法
- C#对象深拷贝
- C# 对象深拷贝
- C#中深拷贝对象的简单方法
- c# 对象深拷贝,浅铐贝,直接拷贝
- C# 对象深拷贝、浅铐贝、直接拷贝
- C# 对象深拷贝、浅铐贝、直接拷贝
- C#对象的浅拷贝,深拷贝
- C#对象的浅拷贝,深拷贝
- C#的对象深拷贝
- c#的对象的深拷贝和浅拷贝
- C#对象的浅拷贝、序列化深拷贝
- C# 对象间的 深拷贝 实现
- C# 对象的拷贝
- C# 对象的拷贝
- c#对象拷贝
- java 对象深拷贝通用方法
- python多进程web服务器新思路
- POJ2488(A Knight's Journey)(DFS+按字典序输出)
- NTP时间同步设置
- W3c html+css基础参考手册-2016-01参考
- 机器学习系列(5)_从白富美相亲看特征预处理与选择(上)
- C#对象深拷贝方法 - 通用版
- c++11move语意的便捷理解
- 【iOS开发】判断app启动的方式(launchOptions)
- Servlet运行原理及其生命周期
- 手机网页开发问题总结(一)
- 跑spark1.5.2 application报错
- haproxy 4层代理
- python抓取网页过程
- Linux procfs详解