2012-03-16 44 views
14

Giả sử các đối tượng bạn đang lập bản đồ với AutoMapper không cần ánh xạ tùy chỉnh, có bao giờ một điểm trong việc này:AutoMapper - tại sao sử dụng Bản đồ trên Bản đồ động?

Mapper.CreateMap<Src, Dest>(); 
// .... 
Mapper.Map(SrcObject, DestObj); 

Nếu không có ánh xạ tùy chỉnh được yêu cầu, không phương pháp trên đạt được bất cứ điều gì bạn qua chỉ sử dụng DynamicMap mà không cần cấu hình trước?

Mapper.DynamicMap(SrcObject, DestObj); 

Tôi hiểu rằng DynamicMapcần khi bạn đang lập bản đồ các loại vô danh, nhưng tôi đang hỏi về việc liệu DyanmicMap là bao giờ không ưa thích với nhiều loại tĩnh mà không cần ánh xạ tùy chỉnh.

Trả lời

16

Được một lúc kể từ khi tôi mới được sử dụng Automapper, nhưng nếu tôi nhớ chính xác:

Để sử dụng Map, bạn cần phải xác định những Maps một cách rõ ràng đầu tiên qua CreateMap. Sau đó, bạn có thể xác thực Cấu hình của mình bằng cách gọi AssertConfigurationIsValid.

Điều này xảy ra ngay sau khi khởi chạy ứng dụng của bạn thay vì gặp lỗi giữa thực thi (với điều kiện bạn tạo ánh xạ và xác thực khi khởi động, được khuyến nghị).

Ngoài ra một số loại không khớp với 1: 1, vì vậy bạn muốn chỉ định ánh xạ chính xác, không chắc chắn nếu DynamicMap sử dụng Bản đồ bạn đã giới thiệu theo cách thủ công, thực sự tôi nghĩ là không.
Chỉ cần chọn, DynamicMap sẽ quay trở lại Maps hiện có trong phiên bản hiện tại trên github.

Đó cũng là vấn đề về hiệu suất kể từ khi DynamicMap sử dụng phản ánh nhiều hơn phương pháp Map, vì bạn đã chỉ định cấu hình ánh xạ và hầu hết không cần phải xác nhận ong nữa. Không chắc chắn nếu phiên bản mới của Automapper đang thực hiện bộ nhớ đệm trong lĩnh vực này ngay bây giờ mặc dù.

+0

+1 - ahh, tôi thấy có một 'Mapper.AssertConfigurationIsValid();' - bất kỳ điều gì khác ngoài những người mới bắt đầu ?? :) –

Các vấn đề liên quan