123456789101112131415161718192021222324252627 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- namespace DirectService.Tools
- {
- public class ObjectHelper
- {
- //深度复制
- public static T DeepCopy<T>(T obj)
- {
- //如果是字符串或值类型则直接返回
- if (obj is string || obj.GetType().IsValueType) return obj;
- object retval = Activator.CreateInstance(obj.GetType());
- FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
- foreach (FieldInfo field in fields)
- {
- try { field.SetValue(retval, DeepCopy(field.GetValue(obj))); }
- catch { }
- }
- return (T)retval;
- }
- }
- }
|