Trong hầu hết các tình huống lập bản đồ, chúng ta đều biết các loại chúng tôi đang lập bản đồ để ở thời gian biên dịch. Trong một số trường hợp, loại nguồn không được biết cho đến khi thời gian chạy là , đặc biệt là trong các trường hợp tôi đang sử dụng các loại động hoặc trong các trường hợp có thể mở rộng là .
Cuộc gọi DynamicMap tạo cấu hình cho loại đối tượng nguồn được chuyển đến loại đích được chỉ định. Nếu hai loại đã được lập bản đồ, AutoMapper sẽ bỏ qua bước này (vì tôi có thể gọi Bản đồ động nhiều lần cho ví dụ này).
Nguồn: http://lostechies.com/jimmybogard/2009/04/15/automapper-feature-interfaces-and-dynamic-mapping/
ngắn hơn phiên bản: DynamicMap cũng giống như gọi CreateMap sau đó Bản đồ.
Một số Person lớp giả
phép nói rằng bạn có một danh sách của Người.
var persons = new List<Person>();
for (int i = 0; i < 100; i++)
{
persons.Add(new Person {
Name = String.Format("John {0}", i),
Surname = String.Format("Smith {0}", i),
Age = i });
}
Sau đó, bạn chọn một người thêm thuộc tính mới.
var anonymousTypes = persons.Select(p => new {
p.Name,
p.Surname,
FullName = String.Format("{0}, {1}", p.Surname,p.Name) }).ToList();
Để có được đúng ánh xạ là người đầu tiên
var testFile = Mapper.DynamicMap<Person>(anonymousTypes.First());
Để có được đúng ánh xạ tất cả những người bạn sẽ sử dụng
var testFiles = anonymousTypes.Select(Mapper.DynamicMap<Person>).ToList();
Có thể kiểm tra các giải pháp sau đây: http://stackoverflow.com/ a/5978050/1241400 –
@plurby, không áp dụng, vì câu hỏi đó liên quan đến hai loại đã biết, tôi có danh sách loại ẩn danh, vì vậy tôi cần sử dụng 'DynamicMap' thay vì' Map' – CaffGeek
Tôi đã kiểm tra và nó hoạt động khi bạn sử dụng query.Select (Mapper.DynamicMap) .ToList(); cú pháp. Bạn có thể cung cấp mã cho truy vấn và DTO của bạn để chúng tôi có thể giúp bạn giải quyết vấn đề không? –