Chúng tôi đang cố gắng để ánh xạ một đối tượng - một Tridion Outbound Email liên hệ - trong đó có một từ điển tùy chỉnh loại tài sản với một nhà xây dựng nội bộ - ExtendedDetailCollectionMapping để một kiểu tùy chỉnh trong đó có một nhà xây dựng nội
Đó là lập bản đồ tốt từ đối tượng lên một ViewModel
Mapper.CreateMap<Contact,ContactViewModel>()
.ForMember(x=>x.Name, m=>m.MapFrom(x=>x.ExtendedDetails["Name"].StringValue))
nhưng theo cách khác không hoạt động
Chúng tôi đã cố gắng:
Mapper.CreateMap<ContactViewModel,Contact>()
.ForMember(x=>x.ExtendedDetails["Name"].Value, m => m.MapFrom(x=>x.Name));
nhưng điều đó sẽ ném ngoại lệ thời gian chạy.
Edit: Thông điệp của các ngoại lệ là:
AutoMapper.AutoMapperConfigurationException: cấu hình tuỳ chỉnh cho thành viên chỉ được hỗ trợ cho các thành viên cá nhân cấp cao nhất trên một loại.
Chúng tôi cũng đã thử các trình chuyển đổi loại khác nhau và các giá trị phân giải nhưng không cho phép chúng ta nhận được đối tượng đang được ánh xạ tới.
Mapper.CreateMap<ContactViewModel,Contact>()
.ForMember(x=>x.ExtendedDetails, m => ????);
Có mẫu cho việc này hay dễ sử dụng phương pháp tĩnh hơn không?
Ngoại lệ bạn đang nhận được là vấn đề mà AutoMapper không thể khởi tạo một thể hiện của từ điển đó? –
Có thể điều này sẽ hữu ích. http://stackoverflow.com/questions/9110815/automapper-map-from-one-object-to-nested-objects Tôi đã sử dụng một Resolvers giá trị tùy chỉnh để ánh xạ từ các đối tượng bên trong. –
@TrevorPilley Vâng, đó là vấn đề. Tôi sẽ cập nhật với ngoại lệ ngay bây giờ. Không có cách nào để khởi tạo từ điển chi tiết mở rộng trực tiếp và Trình giải quyết giá trị mong muốn tự tạo lớp nếu nó là một lớp. Tôi không thể tìm thấy một cách để vượt qua tài sản ExtendedDetails như là một giá trị ban đầu. –