Napisałem klasę za pomocą pojedynczej statycznej metody, która kopiuje wartości właściwości z jednego obiektu do drugiego. Nie obchodzi go, jaki typ ma każdy obiekt, tylko że mają identyczne właściwości. Robi to, czego potrzebuję, więc nie będę go dalej rozwijać, ale jakie ulepszenia byś zrobił?Jak ulepszyłbyś tę płytką klasę kopiowania?
Oto kod:
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);
}
}
}
Używam go w następujący sposób:
EmployeeDTO dto = GetEmployeeDTO();
Employee employee = new Employee();
ShallowCopy.Copy(dto, employee);
Jak używamy to z listy lub obiektu, który ma kilka List zawiera listy? –
To byłaby * głęboka * kopia. Zasadniczo to samo, co powyżej, ale rekursywne, w którym znajduje się 'PropertyInfo' z' PropertyType', który jest dziedziczony z 'IEnumerable'. Musiałbyś oczywiście uporać się z oczyszczaniem celu, który można przeliczyć i rzeczy. –