首页 > 解决方案 > 使用 IncludeMembers 时 Automapper 出错

问题描述

我正在尝试使用 Automapper 9.0 和IncludeMembers()在两个对象之间进行映射, RequestRequestDto,但是我总是收到以下消息:

没有为类型“请求”定义属性“人员”

我理解错误消息,因为该属性未定义并且知道我可以ForMember在每个属性上使用,但我想使用IncludeMembers(). 如何配置 Automapper 以便映射我的对象?

public class RequestDto
{
   public string FirstName {get;set;}
}

public class Request
{
  public SearchFields SearchFields {get;set;}
}

public class SearchFields 
{
  public Person Person {get;set;}
}

public class Person
{
  public string FirstName {get;set;}
}

映射代码

CreateMap<Request, RequestDto>()
    .IncludeMembers(m=>m.SearchFields, m=>m.Searchfields.Person);
CreateMap<Person, RequestDto>(MemberList.None); 
CreateMap<SearchFields, RequestDto>(Memberlist.None);

标签: c#.net-coreautomapper

解决方案


试试这样:

CreateMap<Request, RequestDto>()
     .ForMember(x => x.FirstName, opt => opt.MapFrom(x => x.SearchFields.Person.FirstName));

推荐阅读