Tôi đã viết một lớp với một phương thức tĩnh duy nhất sao chép các giá trị thuộc tính từ một đối tượng này sang đối tượng khác. Nó không quan tâm đến từng loại đối tượng, chỉ có chúng có các thuộc tính giống hệt nhau. Nó làm những gì tôi cần, vì vậy tôi không kỹ thuật hơn nữa, nhưng bạn sẽ làm những cải tiến nào?Bạn sẽ cải thiện lớp sao chép nông này như thế nào?
Dưới đây là các mã:
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);
}
}
}
Tôi đang sử dụng nó như sau:
EmployeeDTO dto = GetEmployeeDTO();
Employee employee = new Employee();
ShallowCopy.Copy(dto, employee);
Cách chúng tôi sử dụng mã này với Danh sách hoặc đối tượng có một số Danh sách danh sách trong đó? –
Đó sẽ là bản sao * sâu *. Về cơ bản giống như ở trên nhưng đệ quy nơi bạn tìm thấy một 'PropertyInfo' với một' PropertyType' được thừa kế từ 'IEnumerable'. Bạn sẽ cần phải đối phó với thanh toán bù trừ các mục tiêu enumerable và mọi thứ, rõ ràng. –