C#对象深拷贝

public static T DeepCopy<T>(this 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;
	}

猜你喜欢

转载自blog.csdn.net/fucun1984686003/article/details/52172705