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<T>(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;
}
}
}