Tôi có hai đối tượng cùng loại và cần phải 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. Có hai tùy chọn:Sao chép các thuộc tính đối tượng: phản chiếu hoặc tuần tự hóa - nhanh hơn?
Sử dụng phản ánh, điều hướng qua các thuộc tính của đối tượng đầu tiên và sao chép giá trị.
Sắp xếp lại đối tượng đầu tiên và deserialize một bản sao.
Cả hai làm việc theo yêu cầu của tôi, câu hỏi nào là tốt nhất tôi nên sử dụng trong điều kiện tốc độ (chi phí)?
Ví dụ
class Person
{
public int ID { get; set; }
public string Firsthand { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public decimal Weight { get; set; }
}
Cần để sao chép giá trị tài sản từ Person p1
để Person p2
.
Đối với mẫu đơn giản này - phương pháp nào nhanh hơn?
Cập nhật
Đối serialization tôi sử dụng ObjectCopier gợi ý ở đây: Deep cloning objects
Đối với phản ánh tôi sử dụng mã này:
foreach (PropertyInfo sourcePropertyInfo in copyFromObject.GetType().GetProperties())
{
PropertyInfo destPropertyInfo = copyToObject.GetType().GetProperty(sourcePropertyInfo.Name);
destPropertyInfo.SetValue(
copyToObject,
sourcePropertyInfo.GetValue(copyFromObject, null),
null);
}
Làm thế nào về autoMapper http://automapper.org/ hoặc chỉ Clone() thực hiện công việc? – roundcrisis
Tại sao bạn không thể làm điều đó với nhiệm vụ bình thường? –
@Miau, Đây có vẻ là một hệ thống sao chép tài sản phức tạp, nhờ liên kết, rất thú vị. Nhưng đối với nhu cầu của tôi hiện tại tôi yêu cầu nó được đơn giản, do đó, AutoMapper sẽ là một canon cho trường hợp này tôi nghĩ. Nhưng tôi chắc chắn sẽ kiểm tra và sử dụng nó cho các nhiệm vụ phức tạp. –