C#Copy复制对象
Copy对象
引用
using System.Reflection;
/// <summary> /// 获取或赋值相同属性的对象,找到T对象属性相同名称的进行赋值 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="objOrg">原对象</param> /// <returns></returns> public static T GetCopy<T>(object objOrg) { var objOrgType = objOrg.GetType(); var objOrgProps = objOrgType.GetProperties(); var objNew = Activator.CreateInstance<T>(); var objNewType = objNew.GetType(); var objNewProps = objNewType.GetProperties(); foreach (PropertyInfo objNewP in objNewProps) { var query = objOrgProps.Where(x => x.Name == objNewP.Name); if (query != null && query.Count() > 0) { try { var o = query.First().GetValue(objOrg, null); objNewP.SetValue(objNew, o);//给传入的数据赋值 } catch (Exception) { // throw; } } } return (T)objNew; } /// <summary> /// 获取或赋值相同属性的对象,找到T对象属性相同名称的进行赋值 /// </summary> /// <typeparam name="T">返回类型</typeparam> /// <param name="objOrg">原对象</param> /// <param name="objOrgPropertyInfo">原对象属性</param> /// <param name="objNewPropertyInfo">新对象属性</param> /// <returns></returns> public static T GetCopy<T>(object objOrg, PropertyInfo[] objOrgPropertyInfo, PropertyInfo[] objNewPropertyInfo) { var objOrgProps = objOrgPropertyInfo; var objNew = Activator.CreateInstance<T>(); var objNewProps = objNewPropertyInfo; foreach (PropertyInfo objNewP in objNewProps) { var query = objOrgProps.Where(x => x.Name == objNewP.Name); if (query != null) { try { var o = query.First().GetValue(objOrg, null); objNewP.SetValue(objNew, o);//给传入的数据赋值 } catch (Exception) { // throw; } } } return (T)objNew; } /// <summary> /// 获取或赋值相同属性的对象,找到T对象属性相同名称的进行赋值 /// </summary> /// <typeparam name="T">返回类型</typeparam> /// <typeparam name="T1">原对象类型</typeparam> /// <param name="objOrg">原对象集合</param> /// <returns></returns> public static List<T> GetCopy<T, T1>(List<T1> objOrg) { var objOrgType = objOrg.GetType(); var objOrgProps = objOrgType.GetProperties(); var objNew = Activator.CreateInstance<T>(); var objNewType = objNew.GetType(); var objNewProps = objNewType.GetProperties(); var objNewList = new List<T>(); foreach (var item in objOrg) { var o = GetCopy<T>(item,objOrgProps,objNewProps); objNewList.Add(o); } return objNewList; }
var objOrgType = objOrg.GetType(); var objOrgProps = objOrgType.GetProperties(); var objNew = Activator.CreateInstance<T>(); var objNewType = objNew.GetType(); var objNewProps = objNewType.GetProperties(); foreach (PropertyInfo objNewP in objNewProps) { var query = objOrgProps.Where(x => x.Name.Equals(objNewP.Name)); if (query != null && query.Count() > 0) { try { var o = query.First().GetValue(objOrg, null); objNewP.SetValue(objNew, o);//给传入的数据赋值 } catch (Exception) {
// throw; } } } return (T)objNew;