public static class Ex{
public static T2 Map< T2>(this object t1) where T2 : class
{
var t1_Pinfos = t1.GetType().GetProperties();
var t2_Pinfos = typeof(T2).GetProperties();
var t2 = Activator.CreateInstance();
foreach (var p1 in t1_Pinfos)
{
if (t2_Pinfos.Any(x => x.Name.ToLower() == p1.Name.ToLower() && x.MemberType==p1.MemberType))
{
var p2 = t2_Pinfos.FirstOrDefault(x => x.Name.ToLower() == p1.Name.ToLower() && x.MemberType == p1.MemberType);
p2.SetValue(t2,p1.GetValue(t1));
}
}
return t2;
}
}