如何在 AutoMapper 中将属性从源映射到目标的子属性?

问题描述 投票:0回答:1

我正在调用 API 来获取有关特定游戏的信息。 API 的响应反序列化为以下内容:

public class GameEntity 
{
  public DateTime Start { get; set; }
  public TeamEntity HomeTeam { get; set; }
  public TeamEntity AwayTeam { get; set; }
  public List<PlayerEntity> HomeTeamRoster { get; set; }
  public List<PlayerEntity> AwayTeamRoster { get; set; }
}

但是,我更愿意将各自的名单代表为团队的财产,如下所示:

public class Team
{
  public string Name { get; set; }
  public string Location { get; set; }
  public List<Player> Roster { get; set; }
}

如何扩展

Game
映射以填充
Roster
字段,而无需踩踏现有隐式
Team
映射?我在下面添加了一些代码,希望能够澄清我的意图。

CreateMap<TeamEntity, Team>();
CreateMap<GameEntity, Game>()
  .ForMember(dest => dest.HomeTeam.Roster, opt => opt.MapFrom(src => src.HomeTeamRoster))
  .ForMember(dest => dest.AwayTeam.Roster, opt => opt.MapFrom(src => src.AwayTeamRoster));

这是一个带有 AutoMapper.Extensions.Microsoft.DependencyInjection (12.0.0) 的 .NET 7 项目。

c# .net .net-core automapper
1个回答
0
投票

您需要添加一个映射器:PlayerEntity -> Player,然后自动映射器就会知道如何映射这些。

© www.soinside.com 2019 - 2024. All rights reserved.