如何使用automapper将Request对象转换为IRequest对象?
此示例不起作用。在新对象IRequest中,所有属性都为null:
Mapper.CreateMap<Request, IRequest>();
Mapper.CreateMap<RequestInfo, RequestInfo>();
Mapper.CreateMap<ClientInfo, ClientInfo>();
public class Request {
public RequestInfo requestInfo { get; set; }
public ClientInfo clientInfo { get; set; }
public DocumentInfo documentInfo { get; set; }
}
public interface IRequest {
RequestInfo RequestInfo { get; set; }
ClientInfo ClientInfo { get; set; }
DocumentInfo DocumentInfo { get; set; }
}
答案 0 :(得分:4)
自动映射按属性名称映射,而不是类型名称。由于两个类中的属性由于大小写而具有不同的名称,因此您需要明确定义映射:
Mapper.CreateMap<Request, IRequest>()
.ForMember(d => d.RequestInfo , m => m.MapFrom(s => s.requestInfo ))
.ForMember(d => d.ClientInfo , m => m.MapFrom(s => s.clientInfo ))
.ForMember(d => d.DocumentInfo, m => m.MapFrom(s => s.documentInfo))
或者您可以将Request
中的属性重命名为一致。
作为旁注,我不使用IRequest
作为班级名称。以I
开头的类型几乎普遍被认为是接口,而不是类。