Escribí una clase con un único método estático que copia los valores de propiedad de un objeto a otro. No importa qué tipo sea 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?¿Cómo mejorarías esta clase de copia superficial?
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 la siguiente manera:
EmployeeDTO dto = GetEmployeeDTO();
Employee employee = new Employee();
ShallowCopy.Copy(dto, employee);
¿Cómo utilizamos esto con una lista o un objeto que tiene varios Lista ¿listas en él? –
Eso sería una copia * profunda *. Básicamente es el mismo que el anterior pero recursivo donde se encuentra un 'PropertyInfo' con un' PropertyType' que es heredable de 'IEnumerable'. Tendrás que lidiar con la limpieza del objetivo enumerable y las cosas, obviamente. –