public class Foo
{
public string Baz { get; set; }
public List<Bar> Bars { get; set; }
}
Khi tôi ánh xạ lớp ở trên, có cách nào xác định mức độ sâu mà tôi muốn tự động ánh xạ đối tượng không? Một số mã giả của những gì tôi theo sau:AutoMapper xác định mức ánh xạ
var mapped = Mapper.Map<FooDTO>(foo, opt => { levels: 0 });
// result = { Baz: "" }
var mapped = Mapper.Map<FooDTO>(foo, opt => { levels: 1 });
// result = { Baz: "", Bars: [{ Blah: "" }] }
var mapped = Mapper.Map<FooDTO>(foo, opt => { levels: 2 });
// result = { Baz: "", Bars: [{ Blah: "", Buzz: [{ Baz: "" }] }] }
// etc...
Tôi hiện đang sử dụng công cụ tự động 3.3 do phụ thuộc vào bộ phận phụ.
Không có cách nào để đặt cấp trong tự động hóa ngay cả trong phiên bản mới nhất. Vì Bạn chỉ xử lý 1 cấp phân cấp cùng một lúc. Trong trường hợp của bạn, bạn cần 2 cấu hình bản đồ. Một cho 'Foo' và thứ hai cho' Bar'. Bạn có thể sử dụng 'opt.Ignore()' trong cấu hình bản đồ của bạn cho bất kỳ thuộc tính nào mà bạn không muốn ánh xạ. Automapper tự động ánh xạ nếu tên của các đối tượng giống nhau hoặc khớp. Tôi nghĩ trong trường hợp tên đối tượng của bạn là khác nhau và bạn cần cấu hình cho từng đối tượng. – Venky