这个问题的原因是 Automapper 的默认行为会忽略值为 null 的属性,因此当条件值不为 null 且目标属性的值为 null 时,这个 Precondition 不会被满足,导致映射失败。解决方法可以是手动添加一个条件判断,或者使用 Automapper 的 ForAllMembers 方法来强制包括值为 null 的属性。 以下是解决方法的示例代码:
手动添加条件判断:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap()
.ForMember(dest => dest.SomeProperty, opt =>
opt.PreCondition(src => src.SomeOtherProperty != null && src.SomeOtherProperty.SomeProperty != null));
});
使用 ForAllMembers 方法:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap()
.ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));
});