using System;using System.Collections.Generic;using System.Linq;using System.Reflection;using System.Text;namespace U1City.Infrastructure{ public class EntityExtension { public static T EntityToEntityByField(object obj, T newObj) where T : class,new() { if (newObj == null) { newObj = new T(); } PropertyInfo[] propertyInfos = obj.GetType().GetProperties(); PropertyInfo[] newPropertyInfos = typeof(T).GetProperties(); foreach (var newPropertyInfoItem in newPropertyInfos) { foreach (var propertyInfoItem in propertyInfos) { if ( propertyInfoItem.PropertyType.FullName.Equals(newPropertyInfoItem.PropertyType.FullName) && propertyInfoItem.Name == newPropertyInfoItem.Name && propertyInfoItem.CanRead && newPropertyInfoItem.CanWrite ) { newPropertyInfoItem.SetValue(newObj, propertyInfoItem.GetValue(obj, null), null); break; } else if ( propertyInfoItem.Name == newPropertyInfoItem.Name && !propertyInfoItem.PropertyType.FullName.Equals(newPropertyInfoItem.PropertyType.FullName)) { //?? EntityToEntityByField(propertyInfoItem.GetValue(obj, null), newPropertyInfoItem.GetValue(newObj, null)); } } } return newObj; } }}