Automapper链forallmembers和forallothermembers

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

我试图忽视一些成员,并把一些条件对目前的成员:

        CreateMap<UpdateProfileViewModel, UserSettingModel>()
            .ForMember(dest => dest.FirstName, opts => opts.MapFrom(src => src.FirstName))
            .ForMember(dest => dest.LastName, opts => opts.MapFrom(src => src.LastName))
            .ForMember(dest => dest.PhoneNumber, opts => opts.MapFrom(src => src.PhoneNumber))
            .ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null))
            .ForAllOtherMembers(opts => opts.Ignore());

ForAllMembers我不能使用,因为我已经使用ForAllMembers。

我怎么能忽略来自源空值,并在同一时间忽略所有其他成员映射?

automapper
1个回答
0
投票

所以,因为ForAllMembersForAllOtherMembers回报void我建议使用opts.Condition()方法,虽然这种解决方案也不是那么的优雅

CreateMap<UpdateProfileViewModel, UserSettingModel>()
            .ForMember(dest => dest.FirstName, opts => { opts.Condition(p => p.FirstName != null); opts.MapFrom(p => p.FirstName); })
            .ForMember(dest => dest.LastName, opts => { opts.Condition(p => p.LastName != null); opts.MapFrom(p => p.LastName); })
            .ForMember(dest => dest.PhoneNumber, opts => { opts.Condition(p => p.PhoneNumber != null); opts.MapFrom(p => p.PhoneNumber); })
            .ForAllOtherMembers(opts => opts.Ignore());
© www.soinside.com 2019 - 2024. All rights reserved.