AutoMapper:“忽略其余的”?有沒(méi)有辦法告訴AutoMapper忽略除明確映射的屬性之外的所有屬性?我有外部DTO類可能會(huì)從外部更改,我想避免指定要顯式忽略的每個(gè)屬性,因?yàn)樘砑有聦傩詴?huì)在嘗試將它們映射到我自己的對(duì)象時(shí)破壞功能(導(dǎo)致異常)。
3 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
我已經(jīng)更新了Can Gencer的擴(kuò)展,不會(huì)覆蓋任何現(xiàn)有的地圖。
public static IMappingExpression<TSource, TDestination> IgnoreAllNonExisting<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression){ var sourceType = typeof (TSource); var destinationType = typeof (TDestination); var existingMaps = Mapper.GetAllTypeMaps().First(x => x.SourceType.Equals(sourceType) && x.DestinationType.Equals(destinationType)); foreach (var property in existingMaps.GetUnmappedPropertyNames()) { expression.ForMember(property, opt => opt.Ignore()); } return expression;}
用法:
Mapper.CreateMap<SourceType, DestinationType>() .ForMember(prop => x.Property, opt => opt.MapFrom(src => src.OtherProperty)) .IgnoreAllNonExisting();

慕婉清6462132
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
根據(jù)我的理解,問(wèn)題是目標(biāo)上的字段在源中沒(méi)有映射字段,這就是為什么要尋找忽略那些非映射目標(biāo)字段的方法。
您可以簡(jiǎn)單地使用,而不是實(shí)現(xiàn)和使用這些擴(kuò)展方法
Mapper.CreateMap<destinationModel, sourceModel>(MemberList.Source);
現(xiàn)在,automapper知道它只需要驗(yàn)證所有源字段是否已映射,而不是相反。
您還可以使用:
Mapper.CreateMap<destinationModel, sourceModel>(MemberList.Destination);
- 3 回答
- 0 關(guān)注
- 1705 瀏覽
添加回答
舉報(bào)
0/150
提交
取消