Câu hỏi của tôi có thể là ngớ ngẩn, nhưng tôi khá chắc chắn tôi bỏ lỡ một phần rất quan trọng của vấn đề. Tôi phải làm một số đối tượng để ánh xạ đối tượng (giữa các lớp miền được sử dụng trong dự án C# và các lớp được gửi tới các máy khách flash).Ưu điểm của việc sử dụng Automapper là gì?
Lựa chọn đầu tiên của tôi là Automapper. Nhưng Ive đã có một số vấn đề với nó (thuộc tính lồng nhau, không phải constructor không xác định). Nó chỉ ra rằng nó không phải là quá dễ dàng để bản đồ một loại thực sự phức tạp với automapper.
Sau đó, câu hỏi của tôi là: Tại sao không thực hiện các phương pháp như:
ClassA GetClassAByClassB(ClassB pObj)
{
ClassA objA = new ClassA();
objA.Prop1 = pObj.Prop1;
objA.NestedType.Prop2 = pObj.Prop2;
//....Some more.....
return objA;
}
Nó có chính xác cùng một mức độ linh hoạt như lập bản đồ thực hiện bằng Automapper. Bạn vẫn phải cung cấp thuộc tính nào từ đối tượng nguồn được sao chép vào những thuộc tính nào trong đối tượng đích. Bạn chỉ cần làm điều này bằng cách sử dụng '=' và không phải là biểu thức lambda.
Nhưng nếu bạn thay đổi thứ gì đó trong các lớp miền, bạn phải thay đổi phần "ánh xạ" này. Vì vậy, điều chính mà nên thuyết phục tôi sử dụng Automapper (như tôi đã nói lúc đầu tôi khá chắc chắn tôi đang thiếu một cái gì đó quan trọng).
Điều gì về các thuộc tính không có cùng tên? Và thuộc tính lồng nhau? Tôi nghĩ rằng tôi nên thay đổi các công ước, nhưng đôi khi tài sản ở một bên là 'PositionX' và ở phía bên kia chỉ là 'X'. (chỉ là một ví dụ - các thuộc tính anmes có thể là khá khó đoán). Vì vậy, không phải là nó như tôi không nên sử dụng Automapper trong trường hợp của tôi? – Katalonis
@Katalonis - Sau đó, bạn định cấu hình trình lập bản đồ theo cách an toàn loại bằng lambdas. Đã thêm mẫu mã và liên kết. –