AutoMapper:ForMember()和ForPath()有什么区别?

对不起我的英文

我正在阅读AutoMapper的ReverseMap() ,无法理解ForMember()ForPath()之间的区别。 在我用ForMember()实现的经验中描述了实现。

例如,在我配置反向映射的代码之后:

 public class Customer { public string Surname { get; set; } public string Name { get; set; } public int Age { get; set; } } public class CustomerDto { public string CustomerName { get; set; } public int Age { get; set; } } static void Main(string[] args) { Mapper.Initialize(cfg => { cfg.CreateMap() .ForMember(dist => dist.CustomerName, opt => opt.MapFrom(src => $"{src.Surname} {src.Name}")) .ReverseMap() .ForMember(dist => dist.Surname, opt => opt.MapFrom(src => src.CustomerName.Split(' ')[0])) .ForMember(dist => dist.Name, opt => opt.MapFrom(src => src.CustomerName.Split(' ')[1])); }); // mapping Customer -> CustomerDto //... // // mapping CustomerDto -> Customer var customerDto = new CustomerDto { CustomerName = "Shakhabov Adam", Age = 31 }; var newCustomer = Mapper.Map(customerDto); } 

这是工作。


也许ForMemberForPath做同样的事情或什么时候应该使用ForPath()不是ForMember()

在这种情况下,为避免不一致,ForPath将在内部转换为ForMember。 虽然@IvanStoev所说的是有道理的,但另一种看待它的方式是ForPath是ForMember的子集。 因为你可以在ForMember中做更多的事情。 所以当你有一个成员时,使用ForMember,当你有一个路径时,使用ForPath 🙂