C# 如何有条件地映射到不同的属性?

C# 如何有条件地映射到不同的属性?,c#,automapper,C#,Automapper,我有以下课程: public Company { public Person Person {get; set;} } public Person { } public Manager : Person { } public Salesperson : Person { } public CompanyDto { public Manager Manager {get; set;} public Salesperon Salesperon {get; set;}

我有以下课程:

public Company
{
    public Person Person {get; set;}
}

public Person
{ }

public Manager : Person
{ }

public Salesperson : Person
{ }

public CompanyDto
{
    public Manager Manager {get; set;}
    public Salesperon Salesperon {get; set;}
}
如果
Person
类型为
Manager
,如何更改以下映射,使
Person
映射到
Manager

cfg.CreateMap<Company, CompanyDto>()
   .ForMember(dto => dto.Manager, option => option.MapFrom(model => model.Person))
   .ForMember(dto => dto.Salesperon, option => option.MapFrom(model => model.Person))
   .ReverseMap();
cfg.CreateMap()
.ForMember(dto=>dto.Manager,option=>option.MapFrom(model=>model.Person))
.ForMember(dto=>dto.salesron,option=>option.MapFrom(model=>model.Person))
.ReverseMap();

添加以下映射:

cfg.CreateMap<Person, Manager>().ReverseMap();
cfg.CreateMap<Person, Salesperson>().ReverseMap();
希望这有帮助

cfg.CreateMap<Company, CompanyDto>()
  .ForMember(dto => dto.Manager, option => option.MapFrom(model => model.Person is Manager ? model.Person : null))
  .ForMember(dto => dto.Salesperon, option => option.MapFrom(model => model.Person is Salesperson ? model.Person : null));
cfg.CreateMap<CompanyDto, Company>()
     .ForMember(dto => dto.Person, option => option.MapFrom(model => model.Manager != null ? (Person)model.Manager : model.Salesperon));