[英]AutoMapper - how to use custom value resolver inside custom type converter
[英]AutoMapper custom resolver on the child type
public class Car
{
public int Id {get;set;}
public string Name {get;set;}
public Owner OwnerData {get;set}
}
public class Owner
{
public int Id {get;set;}
public string Name {get;set;}
public string Phone {get;set;}
}
public class CarProfile : Profile
{
public CarProfile()
{
CreateMap<Car, Owner>()
.ForMember(m => m.OwnerData.Name, o=>o.MapFrom(p=>p.Name));
}
}
Owner ownerData = repository.Get<Owner>(id);
IEnumerable<Car> data = mapper.Map<IEnumerable<Car>>(ownerData);
"ClassName": "System.ArgumentException", "Message": "Expression 'm => m.OwnerData.Name' 必须解析为顶级成员而不是任何子对象的属性。您可以使用 ForPath,一个自定义解析器子类型或 AfterMap 选项。",
我怎么可以map这个?
这不起作用,因为您在目标 lambda 中使用 2 级。
使用 Automapper,您只能将 map 提升到 1 级。 要解决问题,您需要使用单个级别。
CreateMap<Owner, Car>().ForMember(dest => dest.OwnerData,
input => input.MapFrom(i => new Owner { Name = i.Name }));
您正在使用 ForMember 但设置了 Owner 的子成员。 用 ForPath 替换 ForMember,它应该可以工作
CreateMap<Car, Owner>()
.ForPath(m => m.OwnerData.Name, o=>o.MapFrom(p=>p.Name));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.