Tôi có thể sử dụng ánh xạ thừa kế trong AutoMapper (v2.2) cho các bản đồ có cùng loại Nguồn nhưng loại đích khác nhau không?AutoMapper - ánh xạ thừa kế không hoạt động, cùng nguồn, nhiều đích
Tôi có tình trạng này cơ bản (các lớp thực có nhiều tài sản hơn):
public abstract class BaseViewModel
{
public int CommonProperty { get; set;}
}
public class ViewModelA : BaseViewModel
{
public int PropertyA { get; set; }
}
public class ViewModelB : BaseViewModel
{
public int PropertyB { get; set; }
}
ViewModelA
và ViewModelB
là cơ quan đại diện khác nhau của lớp Entity cùng:
public class Entity
{
public int Property1 { get; set; }
public int Property2 { get; set; }
public int Property3 { get; set; }
}
Tôi muốn tái sử dụng ánh xạ tương tự cho BaseViewModel
cho từng Chế độ xem, chẳng hạn như:
Mapper.CreateMap<Entity, BaseViewModel>()
.Include<Entity, ViewModelA>()
.Include<Entity, ViewModelB>()
.ForMember(x => x.CommonProperty, y => y.MapFrom(z => z.Property1));
Mapper.CreateMap<Entity, ViewModelA>()
.ForMember(x => x.PropertyA, y => y.MapFrom(z => z.Property2));
Mapper.CreateMap<Entity, ViewModelB>()
.ForMember(x => x.PropertyB, y => y.MapFrom(z => z.Property3));
Nhưng thật không may, điều này dường như không hoạt động. Cuộc gọi như thế này:
var model = Mapper.Map<Entity, ViewModelA>(entity);
kết quả trong model
đã PropertyA
ánh xạ, nhưng không CommonProperty
. Tôi tin rằng tôi đang theo dõi các ví dụ trong https://github.com/AutoMapper/AutoMapper/wiki/Mapping-inheritance đúng cách, nhưng tôi e rằng có nhiều bản đồ được tạo với cùng một loại Nguồn đang cắt AutoMapper.
Mọi thông tin chi tiết? Tôi thích ý tưởng nhóm các ánh xạ lớp cơ sở với nhau, nhưng điều này dường như không hoạt động.
Đối với người đọc tương lai của câu hỏi này - có vẻ như AutoMapper đã sửa lỗi này kể từ khi câu hỏi được hỏi. –
Tôi đang cố gắng làm điều tương tự ở đây, nhưng tôi đang cố gắng làm: 'var model = Mapper.Map (thực thể)' nhưng nó trả về một thể hiện của ViewModelA, không phải là Ví dụ của BaseViewModel, thậm chí tôi nghĩ rằng tôi đang nói với hàm Map để trả về một kiểu BaseViewModel. Tôi đang sử dụng Automapper 3.0, có vẻ như lỗi gốc từ 2.2 đã được giải quyết. –
njkremer
Bài đăng SO này đã giúp tôi giải quyết vấn đề của tôi và có hiệu quả mong muốn để hoạt động. http://stackoverflow.com/questions/27317719/automapper-how-to-not-repeat-mapping-config-from-complex-type-to-base-class – njkremer