如何解决根据解析上下文的属性映射评估了ForAllMembers条件似乎已在较新版本中删除
在AutoMapper 4.1.1中,可以在条件中访问属性映射,源成员和目标成员信息,这对于解决我们仅希望映射已赋予值且已被明确映射到目标成员。我们使用以下代码片段进行了此操作:
.ForAllMembers(o => o.Condition(c =>
{
// Check if source is not mapped directly (function or expression is used instead)
if (c.PropertyMap.SourceMember == null)
return true;
// Only if external shopper's properties are set and mapped already,then map them to the local customer properties
// Mapped properties in external shopper are in MappedPropertySet
var sourcePropertyName = c.PropertyMap.SourceMember.Name;
return ((ExternalShopper)c.Parent.SourceValue).MappedPropertySet.Contains(sourcePropertyName);
}));
为了获得较新版本的解析上下文,必须将方法签名更改为:
.ForAllMembers(o => o.Condition((src,dest,srcMember,destMember,c) =>
似乎在较新版本的AutoMapper中,PropertyMap已从ResolutionContext中删除。据我所知,没有办法找出条件调用中当前正在评估哪个成员?
是否有可能具有相同的“所有成员”条件逻辑,而无需在每个.ForMember上显式设置。(Pre)Condition,也无需为要映射/控制的每个目标属性显式添加.ForMember?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。