![](/img/trans.png)
[英]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.