访问ForAllMembers方法中的源对象
本文关键字:对象 ForAllMembers 方法 访问 | 更新日期: 2023-09-27 18:30:03
尝试跳过基于viewModel上特定字段的属性映射。是否有任何方法可以访问ForAllMembers->条件方法中的源对象
Mapper.CreateMap<AViewModel, AEntity>()
.IgnoreMembers(ignoreMembers)
.ForAllMembers(o => {
o.Condition(ctx => {
//Need to access AViewModel instance here
return "Id" == ctx.MemberName;
});
});
我不知道官方的方法,但您可以在ResolutionContext
上使用Parent
属性
Mapper.CreateMap<AViewModel, AEntity>()
.IgnoreMembers(ignoreMembers)
.ForAllMembers(o => {
o.Condition(ctx => {
AViewModel instance = (AViewModel)ctx.Parent.SourceValue;
return "Id" == ctx.MemberName;
});
});
如果你在映射的多个层次中,你可以"遍历"Parent
关系,直到你找到你想要的类型。
我认为您可以使用自定义ValueResolver的另一种方式来实现这一点。
参见:
使用AutoMapper 的条件投影