自动映射和通用映射

Mik*_*ynn 4 automapper

无论如何都要用automapper来压缩这个?它刚刚变大.

        Mapper.CreateMap<PagedResult<Headline>, PagedResult<HeadlineModel>>();
        Mapper.CreateMap<PagedResult<Event>, PagedResult<EventModel>>();
        Mapper.CreateMap<PagedResult<GymCourt>, PagedResult<GymCourtModel>>();
        Mapper.CreateMap<PagedResult<Gym>, PagedResult<GymModel>>();
        Mapper.CreateMap<PagedResult<EventGymCourt>, PagedResult<EventGymCourtModel>>();
        Mapper.CreateMap<PagedResult<Division>, PagedResult<DivisionModel>>();
        Mapper.CreateMap<PagedResult<Team>, PagedResult<TeamModel>>();
        Mapper.CreateMap<PagedResult<DivisionTeam>, PagedResult<DivisionTeamModel>>();
        Mapper.CreateMap<PagedResult<MemberTeam>, PagedResult<MemberTeamModel>>();
        Mapper.CreateMap<PagedResult<TeamCoach>, PagedResult<TeamCoachModel>>();
        Mapper.CreateMap<PagedResult<DivisionAsset>, PagedResult<DivisionAssetModel>>();
        Mapper.CreateMap<PagedResult<EventAsset>, PagedResult<EventAssetModel>>();
        Mapper.CreateMap<PagedResult<Event>, PagedResult<ApiEvent>>();
        Mapper.CreateMap<PagedResult<Price>, PagedResult<PriceModel>>();
        Mapper.CreateMap<PagedResult<DivisionPrice>, PagedResult<DivisionPriceModel>>();
        Mapper.CreateMap<PagedResult<EventPrice>, PagedResult<EventPriceModel>>();
        Mapper.CreateMap<PagedResult<Division>, PagedResult<ApiDivision>>();
        Mapper.CreateMap<PagedResult<Data.Entities.Player>, PagedResult<PlayerModel>>();
Run Code Online (Sandbox Code Playgroud)

Rob*_*don 12

你可以做的是使用扩展方法.如果你添加这个类:

public static class MappingExtensions
{
    public static IMappingExpression<TSrc, TDest> IncludePagedResultMapping<TSrc, TDest>(this IMappingExpression<TSrc, TDest> expression)
    {
        Mapper.CreateMap<PagedResult<TSrc>, PagedResult<TDest>>()
            .ForMember(dest => dest.HasMoreResults, opt => opt.MapFrom(src => src.HasMoreResults))
            .ForMember(dest => dest.NextPage, opt => opt.MapFrom(src => src.NextPage));

        return expression;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以将分页映射作为实体的一部分包含在模型映射中,即:

Mapper.CreateMap<Headline, HeadlineModel>().IncludePagedResultMapping();
Mapper.CreateMap<Event, EventModel>().IncludePagedResultMapping();
Mapper.CreateMap<GymCourt, GymCourtModel>().IncludePagedResultMapping();
Mapper.CreateMap<Player, PlayerModel>().IncludePagedResultMapping();
Run Code Online (Sandbox Code Playgroud)