我正在调用 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 项目。
您需要添加一个映射器:PlayerEntity -> Player,然后自动映射器就会知道如何映射这些。