This code worked for me. It also takes a very small amount of time to execute.
public static void CopyTo(this object Source, object Destination)
{
foreach (var pS in Source.GetType().GetProperties())
{
foreach (var pT in Destination.GetType().GetProperties())
{
if (pT.Name != pS.Name) continue;
(pT.GetSetMethod()).Invoke(Destination, new object[]
{ pS.GetGetMethod().Invoke( Source, null ) });
break;
}
};
}