Hôm nay tôi đã nâng cấp một ứng dụng đầy đủ chức năng bằng cách sử dụng AutoMapper v1.1 để sử dụng AutoMapper v2.1 và tôi gặp một số vấn đề mà tôi chưa bao giờ gặp phải khi sử dụng phiên bản trước.AutoMapper sử dụng hàm tạo sai
Dưới đây là một ví dụ về lập bản đồ mã của tôi trở lại từ dto để miền đối tượng
public class TypeOne
{
public TypeOne()
{
}
public TypeOne(TypeTwo two)
{
//throw ex if two is null
}
public TypeOne(TypeTwo two, TypeThree three)
{
//throw ex if two or three are null
}
public TypeTwo Two {get; private set;}
public TypeThree Three {get; private set;}
}
public class TypeOneDto
{
public TypeOneDto()
{
}
public TypeTwoDto Two {get; set;}
public TypeThreeDto Three {get; set;}
}
...
Mapper.CreateMap<TypeThreeDto, TypeThree>();
Mapper.CreateMap<TypeTwoDto, TypeTwo>();
Mapper.CreateMap<TypeOneDto, TypeOne>();
var typeOne = Mapper.Map<TypeOne>(typeOneDto);
Tuy nhiên vấn đề đầu tiên tôi gặp phải với v2.1 là rằng AutoMapper đã cố gắng sử dụng constructor với 2 args khi một trong các arg là null và nên sử dụng hàm tạo 1 arg.
sau đó tôi cố gắng sử dụng
Mapper.CreateMap<TypeOneDto, TypeOne>().ConstructUsing(x => new TypeOne());
Nhưng tôi vẫn tiếp tục nhận được một lỗi 'Invocation nhập nhằng' mà tôi không thể giải quyết.
sau đó tôi đã cố gắng
Mapper.CreateMap<TypeOneDto, TypeOne>().ConvertUsing(x => new TypeOne());
và điều đó đã tạo thành công các đối tượng TypeOne sử dụng constructor parameterless nhưng sau đó nó thất bại trong việc thiết lập các thuộc tính setter tin.
Tôi đã tìm kiếm trợ giúp trên trang web AutoMapper và tải xuống mã nguồn để có giao diện đẹp nhưng không nhận được nhiều tài liệu nhỏ và không có nhiều bài kiểm tra đơn vị cho ConstructUsing.
Có điều gì hiển nhiên tôi thiếu mà tôi nên thay đổi với phiên bản v2.1 không? Tôi ngạc nhiên rằng nó đã thay đổi rất nhiều từ v1.1.
thể trùng lặp của [Automapper - làm thế nào để ánh xạ các tham số nhà xây dựng thay vì setters tài sản] (http://stackoverflow.com/questions/2239143/automapper-how-to-map-to-constructor-parameters- thay vì bất động sản-setters) –
Tôi tiếp tục nhận được cùng một lỗi tôi đề cập ở trên khi sử dụng "ConstructUsing". "Yêu cầu không rõ ràng" khi tôi tạo một đối tượng mới với hàm tạo ít tham số. –