¿Cómo mejorarías esta clase de copia superficial?

He escrito una clase con un único método estático que copia los valores de propiedad de un objeto a otro. No le importa de qué tipo es cada objeto, solo que tienen propiedades idénticas. Hace lo que necesito, así que no lo estoy diseñando más, pero ¿qué mejoras harías?

Aquí está el código:

public class ShallowCopy
{
    public static void Copy<From, To>(From from, To to)
        where To : class
        where From : class
    {
        Type toType = to.GetType();
        foreach (var propertyInfo in from.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
        {
            toType.GetProperty(propertyInfo.Name).SetValue(to, propertyInfo.GetValue(from, null), null);
        }
    }
}

Lo estoy usando de la siguiente manera:

EmployeeDTO dto = GetEmployeeDTO();
Employee employee = new Employee();
ShallowCopy.Copy(dto, employee);

Respuestas a la pregunta(4)

Su respuesta a la pregunta